You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
664 lines
18 KiB
Python
664 lines
18 KiB
Python
# 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: Storage (experimental)
|
|
from __future__ import annotations
|
|
from .util import event_class, T_JSON_DICT
|
|
from dataclasses import dataclass
|
|
import enum
|
|
import typing
|
|
from . import browser
|
|
from . import network
|
|
from . import page
|
|
|
|
|
|
class SerializedStorageKey(str):
|
|
def to_json(self) -> str:
|
|
return self
|
|
|
|
@classmethod
|
|
def from_json(cls, json: str) -> SerializedStorageKey:
|
|
return cls(json)
|
|
|
|
def __repr__(self):
|
|
return 'SerializedStorageKey({})'.format(super().__repr__())
|
|
|
|
|
|
class StorageType(enum.Enum):
|
|
'''
|
|
Enum of possible storage types.
|
|
'''
|
|
APPCACHE = "appcache"
|
|
COOKIES = "cookies"
|
|
FILE_SYSTEMS = "file_systems"
|
|
INDEXEDDB = "indexeddb"
|
|
LOCAL_STORAGE = "local_storage"
|
|
SHADER_CACHE = "shader_cache"
|
|
WEBSQL = "websql"
|
|
SERVICE_WORKERS = "service_workers"
|
|
CACHE_STORAGE = "cache_storage"
|
|
INTEREST_GROUPS = "interest_groups"
|
|
ALL_ = "all"
|
|
OTHER = "other"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
@dataclass
|
|
class UsageForType:
|
|
'''
|
|
Usage for a storage type.
|
|
'''
|
|
#: Name of storage type.
|
|
storage_type: StorageType
|
|
|
|
#: Storage usage (bytes).
|
|
usage: float
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['storageType'] = self.storage_type.to_json()
|
|
json['usage'] = self.usage
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
storage_type=StorageType.from_json(json['storageType']),
|
|
usage=float(json['usage']),
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class TrustTokens:
|
|
'''
|
|
Pair of issuer origin and number of available (signed, but not used) Trust
|
|
Tokens from that issuer.
|
|
'''
|
|
issuer_origin: str
|
|
|
|
count: float
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['issuerOrigin'] = self.issuer_origin
|
|
json['count'] = self.count
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
issuer_origin=str(json['issuerOrigin']),
|
|
count=float(json['count']),
|
|
)
|
|
|
|
|
|
class InterestGroupAccessType(enum.Enum):
|
|
'''
|
|
Enum of interest group access types.
|
|
'''
|
|
JOIN = "join"
|
|
LEAVE = "leave"
|
|
UPDATE = "update"
|
|
BID = "bid"
|
|
WIN = "win"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
@dataclass
|
|
class InterestGroupAd:
|
|
'''
|
|
Ad advertising element inside an interest group.
|
|
'''
|
|
render_url: str
|
|
|
|
metadata: typing.Optional[str] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['renderUrl'] = self.render_url
|
|
if self.metadata is not None:
|
|
json['metadata'] = self.metadata
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
render_url=str(json['renderUrl']),
|
|
metadata=str(json['metadata']) if 'metadata' in json else None,
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class InterestGroupDetails:
|
|
'''
|
|
The full details of an interest group.
|
|
'''
|
|
owner_origin: str
|
|
|
|
name: str
|
|
|
|
expiration_time: network.TimeSinceEpoch
|
|
|
|
joining_origin: str
|
|
|
|
trusted_bidding_signals_keys: typing.List[str]
|
|
|
|
ads: typing.List[InterestGroupAd]
|
|
|
|
ad_components: typing.List[InterestGroupAd]
|
|
|
|
bidding_url: typing.Optional[str] = None
|
|
|
|
bidding_wasm_helper_url: typing.Optional[str] = None
|
|
|
|
update_url: typing.Optional[str] = None
|
|
|
|
trusted_bidding_signals_url: typing.Optional[str] = None
|
|
|
|
user_bidding_signals: typing.Optional[str] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['ownerOrigin'] = self.owner_origin
|
|
json['name'] = self.name
|
|
json['expirationTime'] = self.expiration_time.to_json()
|
|
json['joiningOrigin'] = self.joining_origin
|
|
json['trustedBiddingSignalsKeys'] = [i for i in self.trusted_bidding_signals_keys]
|
|
json['ads'] = [i.to_json() for i in self.ads]
|
|
json['adComponents'] = [i.to_json() for i in self.ad_components]
|
|
if self.bidding_url is not None:
|
|
json['biddingUrl'] = self.bidding_url
|
|
if self.bidding_wasm_helper_url is not None:
|
|
json['biddingWasmHelperUrl'] = self.bidding_wasm_helper_url
|
|
if self.update_url is not None:
|
|
json['updateUrl'] = self.update_url
|
|
if self.trusted_bidding_signals_url is not None:
|
|
json['trustedBiddingSignalsUrl'] = self.trusted_bidding_signals_url
|
|
if self.user_bidding_signals is not None:
|
|
json['userBiddingSignals'] = self.user_bidding_signals
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
owner_origin=str(json['ownerOrigin']),
|
|
name=str(json['name']),
|
|
expiration_time=network.TimeSinceEpoch.from_json(json['expirationTime']),
|
|
joining_origin=str(json['joiningOrigin']),
|
|
trusted_bidding_signals_keys=[str(i) for i in json['trustedBiddingSignalsKeys']],
|
|
ads=[InterestGroupAd.from_json(i) for i in json['ads']],
|
|
ad_components=[InterestGroupAd.from_json(i) for i in json['adComponents']],
|
|
bidding_url=str(json['biddingUrl']) if 'biddingUrl' in json else None,
|
|
bidding_wasm_helper_url=str(json['biddingWasmHelperUrl']) if 'biddingWasmHelperUrl' in json else None,
|
|
update_url=str(json['updateUrl']) if 'updateUrl' in json else None,
|
|
trusted_bidding_signals_url=str(json['trustedBiddingSignalsUrl']) if 'trustedBiddingSignalsUrl' in json else None,
|
|
user_bidding_signals=str(json['userBiddingSignals']) if 'userBiddingSignals' in json else None,
|
|
)
|
|
|
|
|
|
def get_storage_key_for_frame(
|
|
frame_id: page.FrameId
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,SerializedStorageKey]:
|
|
'''
|
|
Returns a storage key given a frame id.
|
|
|
|
:param frame_id:
|
|
:returns:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['frameId'] = frame_id.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.getStorageKeyForFrame',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return SerializedStorageKey.from_json(json['storageKey'])
|
|
|
|
|
|
def clear_data_for_origin(
|
|
origin: str,
|
|
storage_types: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Clears storage for origin.
|
|
|
|
:param origin: Security origin.
|
|
:param storage_types: Comma separated list of StorageType to clear.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
params['storageTypes'] = storage_types
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.clearDataForOrigin',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def clear_data_for_storage_key(
|
|
storage_key: str,
|
|
storage_types: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Clears storage for storage key.
|
|
|
|
:param storage_key: Storage key.
|
|
:param storage_types: Comma separated list of StorageType to clear.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['storageKey'] = storage_key
|
|
params['storageTypes'] = storage_types
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.clearDataForStorageKey',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def get_cookies(
|
|
browser_context_id: typing.Optional[browser.BrowserContextID] = None
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.List[network.Cookie]]:
|
|
'''
|
|
Returns all browser cookies.
|
|
|
|
:param browser_context_id: *(Optional)* Browser context to use when called on the browser endpoint.
|
|
:returns: Array of cookie objects.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
if browser_context_id is not None:
|
|
params['browserContextId'] = browser_context_id.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.getCookies',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return [network.Cookie.from_json(i) for i in json['cookies']]
|
|
|
|
|
|
def set_cookies(
|
|
cookies: typing.List[network.CookieParam],
|
|
browser_context_id: typing.Optional[browser.BrowserContextID] = None
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Sets given cookies.
|
|
|
|
:param cookies: Cookies to be set.
|
|
:param browser_context_id: *(Optional)* Browser context to use when called on the browser endpoint.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['cookies'] = [i.to_json() for i in cookies]
|
|
if browser_context_id is not None:
|
|
params['browserContextId'] = browser_context_id.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.setCookies',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def clear_cookies(
|
|
browser_context_id: typing.Optional[browser.BrowserContextID] = None
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Clears cookies.
|
|
|
|
:param browser_context_id: *(Optional)* Browser context to use when called on the browser endpoint.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
if browser_context_id is not None:
|
|
params['browserContextId'] = browser_context_id.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.clearCookies',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def get_usage_and_quota(
|
|
origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.Tuple[float, float, bool, typing.List[UsageForType]]]:
|
|
'''
|
|
Returns usage and quota in bytes.
|
|
|
|
:param origin: Security origin.
|
|
:returns: A tuple with the following items:
|
|
|
|
0. **usage** - Storage usage (bytes).
|
|
1. **quota** - Storage quota (bytes).
|
|
2. **overrideActive** - Whether or not the origin has an active storage quota override
|
|
3. **usageBreakdown** - Storage usage per type (bytes).
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.getUsageAndQuota',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return (
|
|
float(json['usage']),
|
|
float(json['quota']),
|
|
bool(json['overrideActive']),
|
|
[UsageForType.from_json(i) for i in json['usageBreakdown']]
|
|
)
|
|
|
|
|
|
def override_quota_for_origin(
|
|
origin: str,
|
|
quota_size: typing.Optional[float] = None
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Override quota for the specified origin
|
|
|
|
**EXPERIMENTAL**
|
|
|
|
:param origin: Security origin.
|
|
:param quota_size: *(Optional)* The quota size (in bytes) to override the original quota with. If this is called multiple times, the overridden quota will be equal to the quotaSize provided in the final call. If this is called without specifying a quotaSize, the quota will be reset to the default value for the specified origin. If this is called multiple times with different origins, the override will be maintained for each origin until it is disabled (called without a quotaSize).
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
if quota_size is not None:
|
|
params['quotaSize'] = quota_size
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.overrideQuotaForOrigin',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def track_cache_storage_for_origin(
|
|
origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Registers origin to be notified when an update occurs to its cache storage list.
|
|
|
|
:param origin: Security origin.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.trackCacheStorageForOrigin',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def track_indexed_db_for_origin(
|
|
origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Registers origin to be notified when an update occurs to its IndexedDB.
|
|
|
|
:param origin: Security origin.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.trackIndexedDBForOrigin',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def track_indexed_db_for_storage_key(
|
|
storage_key: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Registers storage key to be notified when an update occurs to its IndexedDB.
|
|
|
|
:param storage_key: Storage key.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['storageKey'] = storage_key
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.trackIndexedDBForStorageKey',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def untrack_cache_storage_for_origin(
|
|
origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Unregisters origin from receiving notifications for cache storage.
|
|
|
|
:param origin: Security origin.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.untrackCacheStorageForOrigin',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def untrack_indexed_db_for_origin(
|
|
origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Unregisters origin from receiving notifications for IndexedDB.
|
|
|
|
:param origin: Security origin.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['origin'] = origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.untrackIndexedDBForOrigin',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def untrack_indexed_db_for_storage_key(
|
|
storage_key: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Unregisters storage key from receiving notifications for IndexedDB.
|
|
|
|
:param storage_key: Storage key.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['storageKey'] = storage_key
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.untrackIndexedDBForStorageKey',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def get_trust_tokens() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.List[TrustTokens]]:
|
|
'''
|
|
Returns the number of stored Trust Tokens per issuer for the
|
|
current browsing context.
|
|
|
|
**EXPERIMENTAL**
|
|
|
|
:returns:
|
|
'''
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.getTrustTokens',
|
|
}
|
|
json = yield cmd_dict
|
|
return [TrustTokens.from_json(i) for i in json['tokens']]
|
|
|
|
|
|
def clear_trust_tokens(
|
|
issuer_origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,bool]:
|
|
'''
|
|
Removes all Trust Tokens issued by the provided issuerOrigin.
|
|
Leaves other stored data, including the issuer's Redemption Records, intact.
|
|
|
|
**EXPERIMENTAL**
|
|
|
|
:param issuer_origin:
|
|
:returns: True if any tokens were deleted, false otherwise.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['issuerOrigin'] = issuer_origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.clearTrustTokens',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return bool(json['didDeleteTokens'])
|
|
|
|
|
|
def get_interest_group_details(
|
|
owner_origin: str,
|
|
name: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,InterestGroupDetails]:
|
|
'''
|
|
Gets details for a named interest group.
|
|
|
|
**EXPERIMENTAL**
|
|
|
|
:param owner_origin:
|
|
:param name:
|
|
:returns:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['ownerOrigin'] = owner_origin
|
|
params['name'] = name
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.getInterestGroupDetails',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return InterestGroupDetails.from_json(json['details'])
|
|
|
|
|
|
def set_interest_group_tracking(
|
|
enable: bool
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Enables/Disables issuing of interestGroupAccessed events.
|
|
|
|
**EXPERIMENTAL**
|
|
|
|
:param enable:
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['enable'] = enable
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'Storage.setInterestGroupTracking',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
@event_class('Storage.cacheStorageContentUpdated')
|
|
@dataclass
|
|
class CacheStorageContentUpdated:
|
|
'''
|
|
A cache's contents have been modified.
|
|
'''
|
|
#: Origin to update.
|
|
origin: str
|
|
#: Name of cache in origin.
|
|
cache_name: str
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> CacheStorageContentUpdated:
|
|
return cls(
|
|
origin=str(json['origin']),
|
|
cache_name=str(json['cacheName'])
|
|
)
|
|
|
|
|
|
@event_class('Storage.cacheStorageListUpdated')
|
|
@dataclass
|
|
class CacheStorageListUpdated:
|
|
'''
|
|
A cache has been added/deleted.
|
|
'''
|
|
#: Origin to update.
|
|
origin: str
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> CacheStorageListUpdated:
|
|
return cls(
|
|
origin=str(json['origin'])
|
|
)
|
|
|
|
|
|
@event_class('Storage.indexedDBContentUpdated')
|
|
@dataclass
|
|
class IndexedDBContentUpdated:
|
|
'''
|
|
The origin's IndexedDB object store has been modified.
|
|
'''
|
|
#: Origin to update.
|
|
origin: str
|
|
#: Storage key to update.
|
|
storage_key: str
|
|
#: Database to update.
|
|
database_name: str
|
|
#: ObjectStore to update.
|
|
object_store_name: str
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> IndexedDBContentUpdated:
|
|
return cls(
|
|
origin=str(json['origin']),
|
|
storage_key=str(json['storageKey']),
|
|
database_name=str(json['databaseName']),
|
|
object_store_name=str(json['objectStoreName'])
|
|
)
|
|
|
|
|
|
@event_class('Storage.indexedDBListUpdated')
|
|
@dataclass
|
|
class IndexedDBListUpdated:
|
|
'''
|
|
The origin's IndexedDB database list has been modified.
|
|
'''
|
|
#: Origin to update.
|
|
origin: str
|
|
#: Storage key to update.
|
|
storage_key: str
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> IndexedDBListUpdated:
|
|
return cls(
|
|
origin=str(json['origin']),
|
|
storage_key=str(json['storageKey'])
|
|
)
|
|
|
|
|
|
@event_class('Storage.interestGroupAccessed')
|
|
@dataclass
|
|
class InterestGroupAccessed:
|
|
'''
|
|
One of the interest groups was accessed by the associated page.
|
|
'''
|
|
access_time: network.TimeSinceEpoch
|
|
type_: InterestGroupAccessType
|
|
owner_origin: str
|
|
name: str
|
|
|
|
@classmethod
|
|
def from_json(cls, json: T_JSON_DICT) -> InterestGroupAccessed:
|
|
return cls(
|
|
access_time=network.TimeSinceEpoch.from_json(json['accessTime']),
|
|
type_=InterestGroupAccessType.from_json(json['type']),
|
|
owner_origin=str(json['ownerOrigin']),
|
|
name=str(json['name'])
|
|
)
|