* fix(ui): fix up mobile recordings display * fix(ui): some messages * fix(ui): some messages * fix(player): fix msg generation for ios messages * feat(player): add generic mmanager interface for ios player impl * feat(player): mobile player and message manager; touch manager; videoplayer * feat(player): add iphone shells, add log panel, * feat(player): detect ios sessions and inject correct player * feat(player): move screen mapper to utils * feat(player): events panel for mobile, map shell sizes to device type data, * feat(player): added network tab to mobile player; unify network message (ios and web) * feat(player): resize canvas up to phone screen size, fix capitalize util * feat(player): some general changes to support mobile events and network entries * feat(player): remove swipes from timeline * feat(player): more stuff for list walker * fix(ui): performance tab, mobile project typings and form * fix(ui):some ui touches for ios replayer shell * fix(ui): more fixes for ui, new onboarding screen for mobile projects * feat(ui): mobile overview panel (xray) * feat(ui): fixes for phone shell and tap events * fix(tracker): change phone shells and sizes * fix(tracker): fix border on replay screen * feat(ui): use crashes from db to show in session * feat(ui): use event name for xray * feat(ui): some overall ui fixes * feat(ui): IOS -> iOS * feat(ui): change tags to ant d * fix(ui): fast fix * fix(ui): fix for capitalizer * fix(ui): fix for browser display * fix(ui): fix for note popup * fix(ui): change exceptions display * fix(ui): add click rage to ios xray * fix(ui): some icons and resizing * fix(ui): fix ios context menu overlay, fix console logs creation for ios * feat(ui): added icons * feat(ui): performance warnings * feat(ui): performance warnings * feat(ui): different styles * feat(ui): rm debug true * feat(ui): fix warnings display * feat(ui): some styles for animation * feat(ui): add some animations to warnings * feat(ui): move perf warnings to performance graph * feat(ui): hide/show warns dynamically * feat(ui): new mobile touch animation * fix(tracker): update msg for ios * fix(ui): taprage fixes * fix(ui): regenerate icons and messages * fix(ui): fix msgs * fix(backend): fix events gen * fix(backend): fix userid msg
911 lines
30 KiB
Python
911 lines
30 KiB
Python
# Auto-generated, do not edit
|
|
|
|
from msgcodec.codec import Codec
|
|
from msgcodec.messages import *
|
|
from typing import List
|
|
import io
|
|
|
|
class MessageCodec(Codec):
|
|
|
|
def __init__(self, msg_selector: List[int] = list()):
|
|
self.msg_selector = msg_selector
|
|
|
|
def read_message_id(self, reader: io.BytesIO) -> int:
|
|
"""
|
|
Read and return the first byte where the message id is encoded
|
|
"""
|
|
id_ = self.read_uint(reader)
|
|
return id_
|
|
|
|
def encode(self, m: Message) -> bytes:
|
|
...
|
|
|
|
def decode(self, b: bytes) -> Message:
|
|
reader = io.BytesIO(b)
|
|
return self.read_head_message(reader)
|
|
|
|
@staticmethod
|
|
def check_message_id(b: bytes) -> int:
|
|
"""
|
|
todo: make it static and without reader. It's just the first byte
|
|
Read and return the first byte where the message id is encoded
|
|
"""
|
|
reader = io.BytesIO(b)
|
|
id_ = Codec.read_uint(reader)
|
|
|
|
return id_
|
|
|
|
@staticmethod
|
|
def decode_key(b) -> int:
|
|
"""
|
|
Decode the message key (encoded with little endian)
|
|
"""
|
|
try:
|
|
decoded = int.from_bytes(b, "little", signed=False)
|
|
except Exception as e:
|
|
raise UnicodeDecodeError(f"Error while decoding message key (SessionID) from {b}\n{e}")
|
|
return decoded
|
|
|
|
def decode_detailed(self, b: bytes) -> List[Message]:
|
|
reader = io.BytesIO(b)
|
|
messages_list = list()
|
|
try:
|
|
messages_list.append(self.handler(reader, 0))
|
|
except IndexError:
|
|
print('[WARN] Broken batch')
|
|
return list()
|
|
if isinstance(messages_list[0], BatchMeta):
|
|
# Old BatchMeta
|
|
mode = 0
|
|
elif isinstance(messages_list[0], BatchMetadata):
|
|
# New BatchMeta
|
|
if messages_list[0].version == 0:
|
|
mode = 0
|
|
else:
|
|
mode = 1
|
|
else:
|
|
return messages_list
|
|
while True:
|
|
try:
|
|
msg_decoded = self.handler(reader, mode)
|
|
if msg_decoded is not None:
|
|
messages_list.append(msg_decoded)
|
|
except IndexError:
|
|
break
|
|
return messages_list
|
|
|
|
def handler(self, reader: io.BytesIO, mode=0) -> Message:
|
|
message_id = self.read_message_id(reader)
|
|
#print(f'[INFO-context] Current mode {mode}')
|
|
#print(f'[INFO] Currently processing message type {message_id}')
|
|
if mode == 1:
|
|
# We read the three bytes representing the length of message. It can be used to skip unwanted messages
|
|
r_size = self.read_size(reader)
|
|
if message_id not in self.msg_selector:
|
|
reader.read(r_size)
|
|
return None
|
|
return self.read_head_message(reader, message_id)
|
|
elif mode == 0:
|
|
# Old format with no bytes for message length
|
|
return self.read_head_message(reader, message_id)
|
|
else:
|
|
raise IOError()
|
|
|
|
def read_head_message(self, reader: io.BytesIO, message_id) -> Message:
|
|
|
|
if message_id == 0:
|
|
return Timestamp(
|
|
timestamp=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 1:
|
|
return SessionStart(
|
|
timestamp=self.read_uint(reader),
|
|
project_id=self.read_uint(reader),
|
|
tracker_version=self.read_string(reader),
|
|
rev_id=self.read_string(reader),
|
|
user_uuid=self.read_string(reader),
|
|
user_agent=self.read_string(reader),
|
|
user_os=self.read_string(reader),
|
|
user_os_version=self.read_string(reader),
|
|
user_browser=self.read_string(reader),
|
|
user_browser_version=self.read_string(reader),
|
|
user_device=self.read_string(reader),
|
|
user_device_type=self.read_string(reader),
|
|
user_device_memory_size=self.read_uint(reader),
|
|
user_device_heap_size=self.read_uint(reader),
|
|
user_country=self.read_string(reader),
|
|
user_id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 3:
|
|
return SessionEndDeprecated(
|
|
timestamp=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 4:
|
|
return SetPageLocation(
|
|
url=self.read_string(reader),
|
|
referrer=self.read_string(reader),
|
|
navigation_start=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 5:
|
|
return SetViewportSize(
|
|
width=self.read_uint(reader),
|
|
height=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 6:
|
|
return SetViewportScroll(
|
|
x=self.read_int(reader),
|
|
y=self.read_int(reader)
|
|
)
|
|
|
|
if message_id == 7:
|
|
return CreateDocument(
|
|
|
|
)
|
|
|
|
if message_id == 8:
|
|
return CreateElementNode(
|
|
id=self.read_uint(reader),
|
|
parent_id=self.read_uint(reader),
|
|
index=self.read_uint(reader),
|
|
tag=self.read_string(reader),
|
|
svg=self.read_boolean(reader)
|
|
)
|
|
|
|
if message_id == 9:
|
|
return CreateTextNode(
|
|
id=self.read_uint(reader),
|
|
parent_id=self.read_uint(reader),
|
|
index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 10:
|
|
return MoveNode(
|
|
id=self.read_uint(reader),
|
|
parent_id=self.read_uint(reader),
|
|
index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 11:
|
|
return RemoveNode(
|
|
id=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 12:
|
|
return SetNodeAttribute(
|
|
id=self.read_uint(reader),
|
|
name=self.read_string(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 13:
|
|
return RemoveNodeAttribute(
|
|
id=self.read_uint(reader),
|
|
name=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 14:
|
|
return SetNodeData(
|
|
id=self.read_uint(reader),
|
|
data=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 15:
|
|
return SetCSSData(
|
|
id=self.read_uint(reader),
|
|
data=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 16:
|
|
return SetNodeScroll(
|
|
id=self.read_uint(reader),
|
|
x=self.read_int(reader),
|
|
y=self.read_int(reader)
|
|
)
|
|
|
|
if message_id == 17:
|
|
return SetInputTarget(
|
|
id=self.read_uint(reader),
|
|
label=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 18:
|
|
return SetInputValue(
|
|
id=self.read_uint(reader),
|
|
value=self.read_string(reader),
|
|
mask=self.read_int(reader)
|
|
)
|
|
|
|
if message_id == 19:
|
|
return SetInputChecked(
|
|
id=self.read_uint(reader),
|
|
checked=self.read_boolean(reader)
|
|
)
|
|
|
|
if message_id == 20:
|
|
return MouseMove(
|
|
x=self.read_uint(reader),
|
|
y=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 21:
|
|
return NetworkRequestDeprecated(
|
|
type=self.read_string(reader),
|
|
method=self.read_string(reader),
|
|
url=self.read_string(reader),
|
|
request=self.read_string(reader),
|
|
response=self.read_string(reader),
|
|
status=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
duration=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 22:
|
|
return ConsoleLog(
|
|
level=self.read_string(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 23:
|
|
return PageLoadTiming(
|
|
request_start=self.read_uint(reader),
|
|
response_start=self.read_uint(reader),
|
|
response_end=self.read_uint(reader),
|
|
dom_content_loaded_event_start=self.read_uint(reader),
|
|
dom_content_loaded_event_end=self.read_uint(reader),
|
|
load_event_start=self.read_uint(reader),
|
|
load_event_end=self.read_uint(reader),
|
|
first_paint=self.read_uint(reader),
|
|
first_contentful_paint=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 24:
|
|
return PageRenderTiming(
|
|
speed_index=self.read_uint(reader),
|
|
visually_complete=self.read_uint(reader),
|
|
time_to_interactive=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 25:
|
|
return JSExceptionDeprecated(
|
|
name=self.read_string(reader),
|
|
message=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 26:
|
|
return IntegrationEvent(
|
|
timestamp=self.read_uint(reader),
|
|
source=self.read_string(reader),
|
|
name=self.read_string(reader),
|
|
message=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 27:
|
|
return CustomEvent(
|
|
name=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 28:
|
|
return UserID(
|
|
id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 29:
|
|
return UserAnonymousID(
|
|
id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 30:
|
|
return Metadata(
|
|
key=self.read_string(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 31:
|
|
return PageEvent(
|
|
message_id=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
url=self.read_string(reader),
|
|
referrer=self.read_string(reader),
|
|
loaded=self.read_boolean(reader),
|
|
request_start=self.read_uint(reader),
|
|
response_start=self.read_uint(reader),
|
|
response_end=self.read_uint(reader),
|
|
dom_content_loaded_event_start=self.read_uint(reader),
|
|
dom_content_loaded_event_end=self.read_uint(reader),
|
|
load_event_start=self.read_uint(reader),
|
|
load_event_end=self.read_uint(reader),
|
|
first_paint=self.read_uint(reader),
|
|
first_contentful_paint=self.read_uint(reader),
|
|
speed_index=self.read_uint(reader),
|
|
visually_complete=self.read_uint(reader),
|
|
time_to_interactive=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 32:
|
|
return InputEvent(
|
|
message_id=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
value=self.read_string(reader),
|
|
value_masked=self.read_boolean(reader),
|
|
label=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 37:
|
|
return CSSInsertRule(
|
|
id=self.read_uint(reader),
|
|
rule=self.read_string(reader),
|
|
index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 38:
|
|
return CSSDeleteRule(
|
|
id=self.read_uint(reader),
|
|
index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 39:
|
|
return Fetch(
|
|
method=self.read_string(reader),
|
|
url=self.read_string(reader),
|
|
request=self.read_string(reader),
|
|
response=self.read_string(reader),
|
|
status=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
duration=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 40:
|
|
return Profiler(
|
|
name=self.read_string(reader),
|
|
duration=self.read_uint(reader),
|
|
args=self.read_string(reader),
|
|
result=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 41:
|
|
return OTable(
|
|
key=self.read_string(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 42:
|
|
return StateAction(
|
|
type=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 44:
|
|
return Redux(
|
|
action=self.read_string(reader),
|
|
state=self.read_string(reader),
|
|
duration=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 45:
|
|
return Vuex(
|
|
mutation=self.read_string(reader),
|
|
state=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 46:
|
|
return MobX(
|
|
type=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 47:
|
|
return NgRx(
|
|
action=self.read_string(reader),
|
|
state=self.read_string(reader),
|
|
duration=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 48:
|
|
return GraphQL(
|
|
operation_kind=self.read_string(reader),
|
|
operation_name=self.read_string(reader),
|
|
variables=self.read_string(reader),
|
|
response=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 49:
|
|
return PerformanceTrack(
|
|
frames=self.read_int(reader),
|
|
ticks=self.read_int(reader),
|
|
total_js_heap_size=self.read_uint(reader),
|
|
used_js_heap_size=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 50:
|
|
return StringDict(
|
|
key=self.read_uint(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 51:
|
|
return SetNodeAttributeDict(
|
|
id=self.read_uint(reader),
|
|
name_key=self.read_uint(reader),
|
|
value_key=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 53:
|
|
return ResourceTimingDeprecated(
|
|
timestamp=self.read_uint(reader),
|
|
duration=self.read_uint(reader),
|
|
ttfb=self.read_uint(reader),
|
|
header_size=self.read_uint(reader),
|
|
encoded_body_size=self.read_uint(reader),
|
|
decoded_body_size=self.read_uint(reader),
|
|
url=self.read_string(reader),
|
|
initiator=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 54:
|
|
return ConnectionInformation(
|
|
downlink=self.read_uint(reader),
|
|
type=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 55:
|
|
return SetPageVisibility(
|
|
hidden=self.read_boolean(reader)
|
|
)
|
|
|
|
if message_id == 56:
|
|
return PerformanceTrackAggr(
|
|
timestamp_start=self.read_uint(reader),
|
|
timestamp_end=self.read_uint(reader),
|
|
min_fps=self.read_uint(reader),
|
|
avg_fps=self.read_uint(reader),
|
|
max_fps=self.read_uint(reader),
|
|
min_cpu=self.read_uint(reader),
|
|
avg_cpu=self.read_uint(reader),
|
|
max_cpu=self.read_uint(reader),
|
|
min_total_js_heap_size=self.read_uint(reader),
|
|
avg_total_js_heap_size=self.read_uint(reader),
|
|
max_total_js_heap_size=self.read_uint(reader),
|
|
min_used_js_heap_size=self.read_uint(reader),
|
|
avg_used_js_heap_size=self.read_uint(reader),
|
|
max_used_js_heap_size=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 57:
|
|
return LoadFontFace(
|
|
parent_id=self.read_uint(reader),
|
|
family=self.read_string(reader),
|
|
source=self.read_string(reader),
|
|
descriptors=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 58:
|
|
return SetNodeFocus(
|
|
id=self.read_int(reader)
|
|
)
|
|
|
|
if message_id == 59:
|
|
return LongTask(
|
|
timestamp=self.read_uint(reader),
|
|
duration=self.read_uint(reader),
|
|
context=self.read_uint(reader),
|
|
container_type=self.read_uint(reader),
|
|
container_src=self.read_string(reader),
|
|
container_id=self.read_string(reader),
|
|
container_name=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 60:
|
|
return SetNodeAttributeURLBased(
|
|
id=self.read_uint(reader),
|
|
name=self.read_string(reader),
|
|
value=self.read_string(reader),
|
|
base_url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 61:
|
|
return SetCSSDataURLBased(
|
|
id=self.read_uint(reader),
|
|
data=self.read_string(reader),
|
|
base_url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 62:
|
|
return IssueEventDeprecated(
|
|
message_id=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
type=self.read_string(reader),
|
|
context_string=self.read_string(reader),
|
|
context=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 63:
|
|
return TechnicalInfo(
|
|
type=self.read_string(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 64:
|
|
return CustomIssue(
|
|
name=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 66:
|
|
return AssetCache(
|
|
url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 67:
|
|
return CSSInsertRuleURLBased(
|
|
id=self.read_uint(reader),
|
|
rule=self.read_string(reader),
|
|
index=self.read_uint(reader),
|
|
base_url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 69:
|
|
return MouseClick(
|
|
id=self.read_uint(reader),
|
|
hesitation_time=self.read_uint(reader),
|
|
label=self.read_string(reader),
|
|
selector=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 70:
|
|
return CreateIFrameDocument(
|
|
frame_id=self.read_uint(reader),
|
|
id=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 71:
|
|
return AdoptedSSReplaceURLBased(
|
|
sheet_id=self.read_uint(reader),
|
|
text=self.read_string(reader),
|
|
base_url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 72:
|
|
return AdoptedSSReplace(
|
|
sheet_id=self.read_uint(reader),
|
|
text=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 73:
|
|
return AdoptedSSInsertRuleURLBased(
|
|
sheet_id=self.read_uint(reader),
|
|
rule=self.read_string(reader),
|
|
index=self.read_uint(reader),
|
|
base_url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 74:
|
|
return AdoptedSSInsertRule(
|
|
sheet_id=self.read_uint(reader),
|
|
rule=self.read_string(reader),
|
|
index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 75:
|
|
return AdoptedSSDeleteRule(
|
|
sheet_id=self.read_uint(reader),
|
|
index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 76:
|
|
return AdoptedSSAddOwner(
|
|
sheet_id=self.read_uint(reader),
|
|
id=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 77:
|
|
return AdoptedSSRemoveOwner(
|
|
sheet_id=self.read_uint(reader),
|
|
id=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 78:
|
|
return JSException(
|
|
name=self.read_string(reader),
|
|
message=self.read_string(reader),
|
|
payload=self.read_string(reader),
|
|
metadata=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 79:
|
|
return Zustand(
|
|
mutation=self.read_string(reader),
|
|
state=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 80:
|
|
return BatchMeta(
|
|
page_no=self.read_uint(reader),
|
|
first_index=self.read_uint(reader),
|
|
timestamp=self.read_int(reader)
|
|
)
|
|
|
|
if message_id == 81:
|
|
return BatchMetadata(
|
|
version=self.read_uint(reader),
|
|
page_no=self.read_uint(reader),
|
|
first_index=self.read_uint(reader),
|
|
timestamp=self.read_int(reader),
|
|
location=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 82:
|
|
return PartitionedMessage(
|
|
part_no=self.read_uint(reader),
|
|
part_total=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 83:
|
|
return NetworkRequest(
|
|
type=self.read_string(reader),
|
|
method=self.read_string(reader),
|
|
url=self.read_string(reader),
|
|
request=self.read_string(reader),
|
|
response=self.read_string(reader),
|
|
status=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
duration=self.read_uint(reader),
|
|
transferred_body_size=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 112:
|
|
return InputChange(
|
|
id=self.read_uint(reader),
|
|
value=self.read_string(reader),
|
|
value_masked=self.read_boolean(reader),
|
|
label=self.read_string(reader),
|
|
hesitation_time=self.read_int(reader),
|
|
input_duration=self.read_int(reader)
|
|
)
|
|
|
|
if message_id == 113:
|
|
return SelectionChange(
|
|
selection_start=self.read_uint(reader),
|
|
selection_end=self.read_uint(reader),
|
|
selection=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 114:
|
|
return MouseThrashing(
|
|
timestamp=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 115:
|
|
return UnbindNodes(
|
|
total_removed_percent=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 116:
|
|
return ResourceTiming(
|
|
timestamp=self.read_uint(reader),
|
|
duration=self.read_uint(reader),
|
|
ttfb=self.read_uint(reader),
|
|
header_size=self.read_uint(reader),
|
|
encoded_body_size=self.read_uint(reader),
|
|
decoded_body_size=self.read_uint(reader),
|
|
url=self.read_string(reader),
|
|
initiator=self.read_string(reader),
|
|
transferred_size=self.read_uint(reader),
|
|
cached=self.read_boolean(reader)
|
|
)
|
|
|
|
if message_id == 117:
|
|
return TabChange(
|
|
tab_id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 118:
|
|
return TabData(
|
|
tab_id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 125:
|
|
return IssueEvent(
|
|
message_id=self.read_uint(reader),
|
|
timestamp=self.read_uint(reader),
|
|
type=self.read_string(reader),
|
|
context_string=self.read_string(reader),
|
|
context=self.read_string(reader),
|
|
payload=self.read_string(reader),
|
|
url=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 126:
|
|
return SessionEnd(
|
|
timestamp=self.read_uint(reader),
|
|
encryption_key=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 127:
|
|
return SessionSearch(
|
|
timestamp=self.read_uint(reader),
|
|
partition=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 90:
|
|
return IOSSessionStart(
|
|
timestamp=self.read_uint(reader),
|
|
project_id=self.read_uint(reader),
|
|
tracker_version=self.read_string(reader),
|
|
rev_id=self.read_string(reader),
|
|
user_uuid=self.read_string(reader),
|
|
user_os=self.read_string(reader),
|
|
user_os_version=self.read_string(reader),
|
|
user_device=self.read_string(reader),
|
|
user_device_type=self.read_string(reader),
|
|
user_country=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 91:
|
|
return IOSSessionEnd(
|
|
timestamp=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 92:
|
|
return IOSMetadata(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
key=self.read_string(reader),
|
|
value=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 93:
|
|
return IOSEvent(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
name=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 94:
|
|
return IOSUserID(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 95:
|
|
return IOSUserAnonymousID(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
id=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 96:
|
|
return IOSScreenChanges(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
x=self.read_uint(reader),
|
|
y=self.read_uint(reader),
|
|
width=self.read_uint(reader),
|
|
height=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 97:
|
|
return IOSCrash(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
name=self.read_string(reader),
|
|
reason=self.read_string(reader),
|
|
stacktrace=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 98:
|
|
return IOSViewComponentEvent(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
screen_name=self.read_string(reader),
|
|
view_name=self.read_string(reader),
|
|
visible=self.read_boolean(reader)
|
|
)
|
|
|
|
if message_id == 100:
|
|
return IOSClickEvent(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
label=self.read_string(reader),
|
|
x=self.read_uint(reader),
|
|
y=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 101:
|
|
return IOSInputEvent(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
value=self.read_string(reader),
|
|
value_masked=self.read_boolean(reader),
|
|
label=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 102:
|
|
return IOSPerformanceEvent(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
name=self.read_string(reader),
|
|
value=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 103:
|
|
return IOSLog(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
severity=self.read_string(reader),
|
|
content=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 104:
|
|
return IOSInternalError(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
content=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 105:
|
|
return IOSNetworkCall(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
type=self.read_string(reader),
|
|
method=self.read_string(reader),
|
|
url=self.read_string(reader),
|
|
request=self.read_string(reader),
|
|
response=self.read_string(reader),
|
|
status=self.read_uint(reader),
|
|
duration=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 106:
|
|
return IOSSwipeEvent(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
label=self.read_string(reader),
|
|
x=self.read_uint(reader),
|
|
y=self.read_uint(reader),
|
|
direction=self.read_string(reader)
|
|
)
|
|
|
|
if message_id == 107:
|
|
return IOSBatchMeta(
|
|
timestamp=self.read_uint(reader),
|
|
length=self.read_uint(reader),
|
|
first_index=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 110:
|
|
return IOSPerformanceAggregated(
|
|
timestamp_start=self.read_uint(reader),
|
|
timestamp_end=self.read_uint(reader),
|
|
min_fps=self.read_uint(reader),
|
|
avg_fps=self.read_uint(reader),
|
|
max_fps=self.read_uint(reader),
|
|
min_cpu=self.read_uint(reader),
|
|
avg_cpu=self.read_uint(reader),
|
|
max_cpu=self.read_uint(reader),
|
|
min_memory=self.read_uint(reader),
|
|
avg_memory=self.read_uint(reader),
|
|
max_memory=self.read_uint(reader),
|
|
min_battery=self.read_uint(reader),
|
|
avg_battery=self.read_uint(reader),
|
|
max_battery=self.read_uint(reader)
|
|
)
|
|
|
|
if message_id == 111:
|
|
return IOSIssueEvent(
|
|
timestamp=self.read_uint(reader),
|
|
type=self.read_string(reader),
|
|
context_string=self.read_string(reader),
|
|
context=self.read_string(reader),
|
|
payload=self.read_string(reader)
|
|
)
|
|
|