528 lines
20 KiB
Python
Executable File
528 lines
20 KiB
Python
Executable File
# DO NOT EDIT THIS FILE!
|
|
#
|
|
# This file is generated from the CDP specification. If you need to make
|
|
# changes, edit the generator and regenerate all of the modules.
|
|
#
|
|
# CDP domain: Preload (experimental)
|
|
from __future__ import annotations
|
|
from .util import event_class, T_JSON_DICT
|
|
from dataclasses import dataclass
|
|
import enum
|
|
import typing
|
|
from . import dom
|
|
from . import network
|
|
from . import page
|
|
|
|
|
|
class RuleSetId(str):
|
|
'''
|
|
Unique id
|
|
'''
|
|
def to_json(self) -> str:
|
|
return self
|
|
|
|
@classmethod
|
|
def from_json(cls, json: str) -> RuleSetId:
|
|
return cls(json)
|
|
|
|
def __repr__(self):
|
|
return 'RuleSetId({})'.format(super().__repr__())
|
|
|
|
|
|
@dataclass
|
|
class RuleSet:
|
|
'''
|
|
Corresponds to SpeculationRuleSet
|
|
'''
|
|
id_: RuleSetId
|
|
|
|
#: Identifies a document which the rule set is associated with.
|
|
loader_id: network.LoaderId
|
|
|
|
#: Source text of JSON representing the rule set. If it comes from
|
|
#: ``script`` tag, it is the textContent of the node. Note that it is
|
|
#: a JSON for valid case.
|
|
#:
|
|
#: See also:
|
|
#: - https://wicg.github.io/nav-speculation/speculation-rules.html
|
|
#: - https://github.com/WICG/nav-speculation/blob/main/triggers.md
|
|
source_text: str
|
|
|
|
#: A speculation rule set is either added through an inline
|
|
#: ``script`` tag or through an external resource via the
|
|
#: 'Speculation-Rules' HTTP header. For the first case, we include
|
|
#: the BackendNodeId of the relevant ``script`` tag. For the second
|
|
#: case, we include the external URL where the rule set was loaded
|
|
#: from, and also RequestId if Network domain is enabled.
|
|
#:
|
|
#: See also:
|
|
#: - https://wicg.github.io/nav-speculation/speculation-rules.html#speculation-rules-script
|
|
#: - https://wicg.github.io/nav-speculation/speculation-rules.html#speculation-rules-header
|
|
backend_node_id: typing.Optional[dom.BackendNodeId] = None
|
|
|
|
url: typing.Optional[str] = None
|
|
|
|
request_id: typing.Optional[network.RequestId] = None
|
|
|
|
#: Error information
|
|
#: ``errorMessage`` is null iff ``errorType`` is null.
|
|
error_type: typing.Optional[RuleSetErrorType] = None
|
|
|
|
#: TODO(https://crbug.com/1425354): Replace this property with structured error.
|
|
error_message: typing.Optional[str] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['id'] = self.id_.to_json()
|
|
json['loaderId'] = self.loader_id.to_json()
|
|
json['sourceText'] = self.source_text
|
|
if self.backend_node_id is not None:
|
|
json['backendNodeId'] = self.backend_node_id.to_json()
|
|
if self.url is not None:
|
|
json['url'] = self.url
|
|
if self.request_id is not None:
|
|
json['requestId'] = self.request_id.to_json()
|
|
if self.error_type is not None:
|
|
json['errorType'] = self.error_type.to_json()
|
|
if self.error_message is not None:
|
|
json['errorMessage'] = self.error_message
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
id_=RuleSetId.from_json(json['id']),
|
|
loader_id=network.LoaderId.from_json(json['loaderId']),
|
|
source_text=str(json['sourceText']),
|
|
backend_node_id=dom.BackendNodeId.from_json(json['backendNodeId']) if 'backendNodeId' in json else None,
|
|
url=str(json['url']) if 'url' in json else None,
|
|
request_id=network.RequestId.from_json(json['requestId']) if 'requestId' in json else None,
|
|
error_type=RuleSetErrorType.from_json(json['errorType']) if 'errorType' in json else None,
|
|
error_message=str(json['errorMessage']) if 'errorMessage' in json else None,
|
|
)
|
|
|
|
|
|
class RuleSetErrorType(enum.Enum):
|
|
SOURCE_IS_NOT_JSON_OBJECT = "SourceIsNotJsonObject"
|
|
INVALID_RULES_SKIPPED = "InvalidRulesSkipped"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
class SpeculationAction(enum.Enum):
|
|
'''
|
|
The type of preloading attempted. It corresponds to
|
|
mojom::SpeculationAction (although PrefetchWithSubresources is omitted as it
|
|
isn't being used by clients).
|
|
'''
|
|
PREFETCH = "Prefetch"
|
|
PRERENDER = "Prerender"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
class SpeculationTargetHint(enum.Enum):
|
|
'''
|
|
Corresponds to mojom::SpeculationTargetHint.
|
|
See https://github.com/WICG/nav-speculation/blob/main/triggers.md#window-name-targeting-hints
|
|
'''
|
|
BLANK = "Blank"
|
|
SELF = "Self"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
@dataclass
|
|
class PreloadingAttemptKey:
|
|
'''
|
|
A key that identifies a preloading attempt.
|
|
|
|
The url used is the url specified by the trigger (i.e. the initial URL), and
|
|
not the final url that is navigated to. For example, prerendering allows
|
|
same-origin main frame navigations during the attempt, but the attempt is
|
|
still keyed with the initial URL.
|
|
'''
|
|
loader_id: network.LoaderId
|
|
|
|
action: SpeculationAction
|
|
|
|
url: str
|
|
|
|
target_hint: typing.Optional[SpeculationTargetHint] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['loaderId'] = self.loader_id.to_json()
|
|
json['action'] = self.action.to_json()
|
|
json['url'] = self.url
|
|
if self.target_hint is not None:
|
|
json['targetHint'] = self.target_hint.to_json()
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
loader_id=network.LoaderId.from_json(json['loaderId']),
|
|
action=SpeculationAction.from_json(json['action']),
|
|
url=str(json['url']),
|
|
target_hint=SpeculationTargetHint.from_json(json['targetHint']) if 'targetHint' in json else None,
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class PreloadingAttemptSource:
|
|
'''
|
|
Lists sources for a preloading attempt, specifically the ids of rule sets
|
|
that had a speculation rule that triggered the attempt, and the
|
|
BackendNodeIds of <a href> or <area href> elements that triggered the
|
|
attempt (in the case of attempts triggered by a document rule). It is
|
|
possible for multiple rule sets and links to trigger a single attempt.
|
|
'''
|
|
key: PreloadingAttemptKey
|
|
|
|
rule_set_ids: typing.List[RuleSetId]
|
|
|
|
node_ids: typing.List[dom.BackendNodeId]
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['key'] = self.key.to_json()
|
|
json['ruleSetIds'] = [i.to_json() for i in self.rule_set_ids]
|
|
json['nodeIds'] = [i.to_json() for i in self.node_ids]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
key=PreloadingAttemptKey.from_json(json['key']),
|
|
rule_set_ids=[RuleSetId.from_json(i) for i in json['ruleSetIds']],
|
|
node_ids=[dom.BackendNodeId.from_json(i) for i in json['nodeIds']],
|
|
)
|
|
|
|
|
|
class PrerenderFinalStatus(enum.Enum):
|
|
'''
|
|
List of FinalStatus reasons for Prerender2.
|
|
'''
|
|
ACTIVATED = "Activated"
|
|
DESTROYED = "Destroyed"
|
|
LOW_END_DEVICE = "LowEndDevice"
|
|
INVALID_SCHEME_REDIRECT = "InvalidSchemeRedirect"
|
|
INVALID_SCHEME_NAVIGATION = "InvalidSchemeNavigation"
|
|
NAVIGATION_REQUEST_BLOCKED_BY_CSP = "NavigationRequestBlockedByCsp"
|
|
MAIN_FRAME_NAVIGATION = "MainFrameNavigation"
|
|
MOJO_BINDER_POLICY = "MojoBinderPolicy"
|
|
RENDERER_PROCESS_CRASHED = "RendererProcessCrashed"
|
|
RENDERER_PROCESS_KILLED = "RendererProcessKilled"
|
|
DOWNLOAD = "Download"
|
|
TRIGGER_DESTROYED = "TriggerDestroyed"
|
|
NAVIGATION_NOT_COMMITTED = "NavigationNotCommitted"
|
|
NAVIGATION_BAD_HTTP_STATUS = "NavigationBadHttpStatus"
|
|
CLIENT_CERT_REQUESTED = "ClientCertRequested"
|
|
NAVIGATION_REQUEST_NETWORK_ERROR = "NavigationRequestNetworkError"
|
|
CANCEL_ALL_HOSTS_FOR_TESTING = "CancelAllHostsForTesting"
|
|
DID_FAIL_LOAD = "DidFailLoad"
|
|
STOP = "Stop"
|
|
SSL_CERTIFICATE_ERROR = "SslCertificateError"
|
|
LOGIN_AUTH_REQUESTED = "LoginAuthRequested"
|
|
UA_CHANGE_REQUIRES_RELOAD = "UaChangeRequiresReload"
|
|
BLOCKED_BY_CLIENT = "BlockedByClient"
|
|
AUDIO_OUTPUT_DEVICE_REQUESTED = "AudioOutputDeviceRequested"
|
|
MIXED_CONTENT = "MixedContent"
|
|
TRIGGER_BACKGROUNDED = "TriggerBackgrounded"
|
|
MEMORY_LIMIT_EXCEEDED = "MemoryLimitExceeded"
|
|
DATA_SAVER_ENABLED = "DataSaverEnabled"
|
|
TRIGGER_URL_HAS_EFFECTIVE_URL = "TriggerUrlHasEffectiveUrl"
|
|
ACTIVATED_BEFORE_STARTED = "ActivatedBeforeStarted"
|
|
INACTIVE_PAGE_RESTRICTION = "InactivePageRestriction"
|
|
START_FAILED = "StartFailed"
|
|
TIMEOUT_BACKGROUNDED = "TimeoutBackgrounded"
|
|
CROSS_SITE_REDIRECT_IN_INITIAL_NAVIGATION = "CrossSiteRedirectInInitialNavigation"
|
|
CROSS_SITE_NAVIGATION_IN_INITIAL_NAVIGATION = "CrossSiteNavigationInInitialNavigation"
|
|
SAME_SITE_CROSS_ORIGIN_REDIRECT_NOT_OPT_IN_IN_INITIAL_NAVIGATION = "SameSiteCrossOriginRedirectNotOptInInInitialNavigation"
|
|
SAME_SITE_CROSS_ORIGIN_NAVIGATION_NOT_OPT_IN_IN_INITIAL_NAVIGATION = "SameSiteCrossOriginNavigationNotOptInInInitialNavigation"
|
|
ACTIVATION_NAVIGATION_PARAMETER_MISMATCH = "ActivationNavigationParameterMismatch"
|
|
ACTIVATED_IN_BACKGROUND = "ActivatedInBackground"
|
|
EMBEDDER_HOST_DISALLOWED = "EmbedderHostDisallowed"
|
|
ACTIVATION_NAVIGATION_DESTROYED_BEFORE_SUCCESS = "ActivationNavigationDestroyedBeforeSuccess"
|
|
TAB_CLOSED_BY_USER_GESTURE = "TabClosedByUserGesture"
|
|
TAB_CLOSED_WITHOUT_USER_GESTURE = "TabClosedWithoutUserGesture"
|
|
PRIMARY_MAIN_FRAME_RENDERER_PROCESS_CRASHED = "PrimaryMainFrameRendererProcessCrashed"
|
|
PRIMARY_MAIN_FRAME_RENDERER_PROCESS_KILLED = "PrimaryMainFrameRendererProcessKilled"
|
|
ACTIVATION_FRAME_POLICY_NOT_COMPATIBLE = "ActivationFramePolicyNotCompatible"
|
|
PRELOADING_DISABLED = "PreloadingDisabled"
|
|
BATTERY_SAVER_ENABLED = "BatterySaverEnabled"
|
|
ACTIVATED_DURING_MAIN_FRAME_NAVIGATION = "ActivatedDuringMainFrameNavigation"
|
|
PRELOADING_UNSUPPORTED_BY_WEB_CONTENTS = "PreloadingUnsupportedByWebContents"
|
|
CROSS_SITE_REDIRECT_IN_MAIN_FRAME_NAVIGATION = "CrossSiteRedirectInMainFrameNavigation"
|
|
CROSS_SITE_NAVIGATION_IN_MAIN_FRAME_NAVIGATION = "CrossSiteNavigationInMainFrameNavigation"
|
|
SAME_SITE_CROSS_ORIGIN_REDIRECT_NOT_OPT_IN_IN_MAIN_FRAME_NAVIGATION = "SameSiteCrossOriginRedirectNotOptInInMainFrameNavigation"
|
|
SAME_SITE_CROSS_ORIGIN_NAVIGATION_NOT_OPT_IN_IN_MAIN_FRAME_NAVIGATION = "SameSiteCrossOriginNavigationNotOptInInMainFrameNavigation"
|
|
MEMORY_PRESSURE_ON_TRIGGER = "MemoryPressureOnTrigger"
|
|
MEMORY_PRESSURE_AFTER_TRIGGERED = "MemoryPressureAfterTriggered"
|
|
PRERENDERING_DISABLED_BY_DEV_TOOLS = "PrerenderingDisabledByDevTools"
|
|
SPECULATION_RULE_REMOVED = "SpeculationRuleRemoved"
|
|
ACTIVATED_WITH_AUXILIARY_BROWSING_CONTEXTS = "ActivatedWithAuxiliaryBrowsingContexts"
|
|
MAX_NUM_OF_RUNNING_EAGER_PRERENDERS_EXCEEDED = "MaxNumOfRunningEagerPrerendersExceeded"
|
|
MAX_NUM_OF_RUNNING_NON_EAGER_PRERENDERS_EXCEEDED = "MaxNumOfRunningNonEagerPrerendersExceeded"
|
|
MAX_NUM_OF_RUNNING_EMBEDDER_PRERENDERS_EXCEEDED = "MaxNumOfRunningEmbedderPrerendersExceeded"
|
|
PRERENDERING_URL_HAS_EFFECTIVE_URL = "PrerenderingUrlHasEffectiveUrl"
|
|
REDIRECTED_PRERENDERING_URL_HAS_EFFECTIVE_URL = "RedirectedPrerenderingUrlHasEffectiveUrl"
|
|
ACTIVATION_URL_HAS_EFFECTIVE_URL = "ActivationUrlHasEffectiveUrl"
|
|
JAVA_SCRIPT_INTERFACE_ADDED = "JavaScriptInterfaceAdded"
|
|
JAVA_SCRIPT_INTERFACE_REMOVED = "JavaScriptInterfaceRemoved"
|
|
ALL_PRERENDERING_CANCELED = "AllPrerenderingCanceled"
|
|
WINDOW_CLOSED = "WindowClosed"
|
|
SLOW_NETWORK = "SlowNetwork"
|
|
OTHER_PRERENDERED_PAGE_ACTIVATED = "OtherPrerenderedPageActivated"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
class PreloadingStatus(enum.Enum):
|
|
'''
|
|
Preloading status values, see also PreloadingTriggeringOutcome. This
|
|
status is shared by prefetchStatusUpdated and prerenderStatusUpdated.
|
|
'''
|
|
PENDING = "Pending"
|
|
RUNNING = "Running"
|
|
READY = "Ready"
|
|
SUCCESS = "Success"
|
|
FAILURE = "Failure"
|
|
NOT_SUPPORTED = "NotSupported"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
class PrefetchStatus(enum.Enum):
|
|
'''
|
|
TODO(https://crbug.com/1384419): revisit the list of PrefetchStatus and
|
|
filter out the ones that aren't necessary to the developers.
|
|
'''
|
|
PREFETCH_ALLOWED = "PrefetchAllowed"
|
|
PREFETCH_FAILED_INELIGIBLE_REDIRECT = "PrefetchFailedIneligibleRedirect"
|
|
PREFETCH_FAILED_INVALID_REDIRECT = "PrefetchFailedInvalidRedirect"
|
|
PREFETCH_FAILED_MIME_NOT_SUPPORTED = "PrefetchFailedMIMENotSupported"
|
|
PREFETCH_FAILED_NET_ERROR = "PrefetchFailedNetError"
|
|
PREFETCH_FAILED_NON2_XX = "PrefetchFailedNon2XX"
|
|
PREFETCH_FAILED_PER_PAGE_LIMIT_EXCEEDED = "PrefetchFailedPerPageLimitExceeded"
|
|
PREFETCH_EVICTED_AFTER_CANDIDATE_REMOVED = "PrefetchEvictedAfterCandidateRemoved"
|
|
PREFETCH_EVICTED_FOR_NEWER_PREFETCH = "PrefetchEvictedForNewerPrefetch"
|
|
PREFETCH_HELDBACK = "PrefetchHeldback"
|
|
PREFETCH_INELIGIBLE_RETRY_AFTER = "PrefetchIneligibleRetryAfter"
|
|
PREFETCH_IS_PRIVACY_DECOY = "PrefetchIsPrivacyDecoy"
|
|
PREFETCH_IS_STALE = "PrefetchIsStale"
|
|
PREFETCH_NOT_ELIGIBLE_BROWSER_CONTEXT_OFF_THE_RECORD = "PrefetchNotEligibleBrowserContextOffTheRecord"
|
|
PREFETCH_NOT_ELIGIBLE_DATA_SAVER_ENABLED = "PrefetchNotEligibleDataSaverEnabled"
|
|
PREFETCH_NOT_ELIGIBLE_EXISTING_PROXY = "PrefetchNotEligibleExistingProxy"
|
|
PREFETCH_NOT_ELIGIBLE_HOST_IS_NON_UNIQUE = "PrefetchNotEligibleHostIsNonUnique"
|
|
PREFETCH_NOT_ELIGIBLE_NON_DEFAULT_STORAGE_PARTITION = "PrefetchNotEligibleNonDefaultStoragePartition"
|
|
PREFETCH_NOT_ELIGIBLE_SAME_SITE_CROSS_ORIGIN_PREFETCH_REQUIRED_PROXY = "PrefetchNotEligibleSameSiteCrossOriginPrefetchRequiredProxy"
|
|
PREFETCH_NOT_ELIGIBLE_SCHEME_IS_NOT_HTTPS = "PrefetchNotEligibleSchemeIsNotHttps"
|
|
PREFETCH_NOT_ELIGIBLE_USER_HAS_COOKIES = "PrefetchNotEligibleUserHasCookies"
|
|
PREFETCH_NOT_ELIGIBLE_USER_HAS_SERVICE_WORKER = "PrefetchNotEligibleUserHasServiceWorker"
|
|
PREFETCH_NOT_ELIGIBLE_BATTERY_SAVER_ENABLED = "PrefetchNotEligibleBatterySaverEnabled"
|
|
PREFETCH_NOT_ELIGIBLE_PRELOADING_DISABLED = "PrefetchNotEligiblePreloadingDisabled"
|
|
PREFETCH_NOT_FINISHED_IN_TIME = "PrefetchNotFinishedInTime"
|
|
PREFETCH_NOT_STARTED = "PrefetchNotStarted"
|
|
PREFETCH_NOT_USED_COOKIES_CHANGED = "PrefetchNotUsedCookiesChanged"
|
|
PREFETCH_PROXY_NOT_AVAILABLE = "PrefetchProxyNotAvailable"
|
|
PREFETCH_RESPONSE_USED = "PrefetchResponseUsed"
|
|
PREFETCH_SUCCESSFUL_BUT_NOT_USED = "PrefetchSuccessfulButNotUsed"
|
|
PREFETCH_NOT_USED_PROBE_FAILED = "PrefetchNotUsedProbeFailed"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
@dataclass
|
|
class PrerenderMismatchedHeaders:
|
|
'''
|
|
Information of headers to be displayed when the header mismatch occurred.
|
|
'''
|
|
header_name: str
|
|
|
|
initial_value: typing.Optional[str] = None
|
|
|
|
activation_value: typing.Optional[str] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['headerName'] = self.header_name
|
|
if self.initial_value is not None:
|
|
json['initialValue'] = self.initial_value
|
|
if self.activation_value is not None:
|
|
json['activationValue'] = self.activation_value
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
header_name=str(json['headerName']),
|
|
initial_value=str(json['initialValue']) if 'initialValue' in json else None,
|
|
activation_value=str(json['activationValue']) if 'activationValue' in json else None,
|
|
)
|
|
|
|
|
|
def enable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Preload.enable',
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def disable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Preload.disable',
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
@event_class('Preload.ruleSetUpdated')
|
|
@dataclass
|
|
class RuleSetUpdated:
|
|
'''
|
|
Upsert. Currently, it is only emitted when a rule set added.
|
|
'''
|
|
rule_set: RuleSet
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> RuleSetUpdated:
|
|
return cls(
|
|
rule_set=RuleSet.from_json(json['ruleSet'])
|
|
)
|
|
|
|
|
|
@event_class('Preload.ruleSetRemoved')
|
|
@dataclass
|
|
class RuleSetRemoved:
|
|
id_: RuleSetId
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> RuleSetRemoved:
|
|
return cls(
|
|
id_=RuleSetId.from_json(json['id'])
|
|
)
|
|
|
|
|
|
@event_class('Preload.preloadEnabledStateUpdated')
|
|
@dataclass
|
|
class PreloadEnabledStateUpdated:
|
|
'''
|
|
Fired when a preload enabled state is updated.
|
|
'''
|
|
disabled_by_preference: bool
|
|
disabled_by_data_saver: bool
|
|
disabled_by_battery_saver: bool
|
|
disabled_by_holdback_prefetch_speculation_rules: bool
|
|
disabled_by_holdback_prerender_speculation_rules: bool
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> PreloadEnabledStateUpdated:
|
|
return cls(
|
|
disabled_by_preference=bool(json['disabledByPreference']),
|
|
disabled_by_data_saver=bool(json['disabledByDataSaver']),
|
|
disabled_by_battery_saver=bool(json['disabledByBatterySaver']),
|
|
disabled_by_holdback_prefetch_speculation_rules=bool(json['disabledByHoldbackPrefetchSpeculationRules']),
|
|
disabled_by_holdback_prerender_speculation_rules=bool(json['disabledByHoldbackPrerenderSpeculationRules'])
|
|
)
|
|
|
|
|
|
@event_class('Preload.prefetchStatusUpdated')
|
|
@dataclass
|
|
class PrefetchStatusUpdated:
|
|
'''
|
|
Fired when a prefetch attempt is updated.
|
|
'''
|
|
key: PreloadingAttemptKey
|
|
#: The frame id of the frame initiating prefetch.
|
|
initiating_frame_id: page.FrameId
|
|
prefetch_url: str
|
|
status: PreloadingStatus
|
|
prefetch_status: PrefetchStatus
|
|
request_id: network.RequestId
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> PrefetchStatusUpdated:
|
|
return cls(
|
|
key=PreloadingAttemptKey.from_json(json['key']),
|
|
initiating_frame_id=page.FrameId.from_json(json['initiatingFrameId']),
|
|
prefetch_url=str(json['prefetchUrl']),
|
|
status=PreloadingStatus.from_json(json['status']),
|
|
prefetch_status=PrefetchStatus.from_json(json['prefetchStatus']),
|
|
request_id=network.RequestId.from_json(json['requestId'])
|
|
)
|
|
|
|
|
|
@event_class('Preload.prerenderStatusUpdated')
|
|
@dataclass
|
|
class PrerenderStatusUpdated:
|
|
'''
|
|
Fired when a prerender attempt is updated.
|
|
'''
|
|
key: PreloadingAttemptKey
|
|
status: PreloadingStatus
|
|
prerender_status: typing.Optional[PrerenderFinalStatus]
|
|
#: This is used to give users more information about the name of Mojo interface
|
|
#: that is incompatible with prerender and has caused the cancellation of the attempt.
|
|
disallowed_mojo_interface: typing.Optional[str]
|
|
mismatched_headers: typing.Optional[typing.List[PrerenderMismatchedHeaders]]
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> PrerenderStatusUpdated:
|
|
return cls(
|
|
key=PreloadingAttemptKey.from_json(json['key']),
|
|
status=PreloadingStatus.from_json(json['status']),
|
|
prerender_status=PrerenderFinalStatus.from_json(json['prerenderStatus']) if 'prerenderStatus' in json else None,
|
|
disallowed_mojo_interface=str(json['disallowedMojoInterface']) if 'disallowedMojoInterface' in json else None,
|
|
mismatched_headers=[PrerenderMismatchedHeaders.from_json(i) for i in json['mismatchedHeaders']] if 'mismatchedHeaders' in json else None
|
|
)
|
|
|
|
|
|
@event_class('Preload.preloadingAttemptSourcesUpdated')
|
|
@dataclass
|
|
class PreloadingAttemptSourcesUpdated:
|
|
'''
|
|
Send a list of sources for all preloading attempts in a document.
|
|
'''
|
|
loader_id: network.LoaderId
|
|
preloading_attempt_sources: typing.List[PreloadingAttemptSource]
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> PreloadingAttemptSourcesUpdated:
|
|
return cls(
|
|
loader_id=network.LoaderId.from_json(json['loaderId']),
|
|
preloading_attempt_sources=[PreloadingAttemptSource.from_json(i) for i in json['preloadingAttemptSources']]
|
|
)
|