58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Plugin-local mirror of the core Chrome wire protocol; never import core."""
|
|
|
|
PROTOCOL_VERSION = 2
|
|
MIN_COMPATIBLE_PROTOCOL_VERSION = 2
|
|
# Chrome Native Messaging hard limits. Protocol facts, not tunables.
|
|
NM_MAX_INBOUND_BYTES = 64 * 1024 * 1024
|
|
NM_MAX_OUTBOUND_BYTES = 1024 * 1024
|
|
# Application-reserved WebSocket close codes for the Native Messaging bridge.
|
|
NM_CLOSE_STDIN_EOF = 4000
|
|
NM_CLOSE_FRAME_PROTOCOL = 4001
|
|
NM_CLOSE_INBOUND_TOO_LARGE = 4002
|
|
NM_CLOSE_INTERNAL_ERROR = 4003
|
|
EXTENSION_COMMANDS = frozenset(
|
|
{
|
|
"cdp.send",
|
|
"command.execute",
|
|
"command.status",
|
|
"tabs.list",
|
|
"tab.attach",
|
|
"tab.detach",
|
|
"tab.ensure",
|
|
"tab.activate",
|
|
"tab.close",
|
|
"tab.create",
|
|
"tab.metadata.commit",
|
|
"banner.show",
|
|
"banner.hide",
|
|
"file.upload",
|
|
"download.read",
|
|
"dialog.set",
|
|
"status.get",
|
|
"bridge.connect",
|
|
"extension.reload",
|
|
},
|
|
)
|
|
EVENT_TYPES = frozenset({"load", "dialog"})
|
|
|
|
|
|
def contract_snapshot() -> dict[str, object]:
|
|
"""Values this plugin build claims to implement, for core comparison."""
|
|
return {
|
|
"protocolVersion": PROTOCOL_VERSION,
|
|
"minCompatibleProtocolVersion": MIN_COMPATIBLE_PROTOCOL_VERSION,
|
|
"nmMaxInboundBytes": NM_MAX_INBOUND_BYTES,
|
|
"nmMaxOutboundBytes": NM_MAX_OUTBOUND_BYTES,
|
|
}
|
|
|
|
|
|
def close_code_catalog() -> dict[int, str]:
|
|
"""Close-code meanings shared with the core browser bridge."""
|
|
return {
|
|
NM_CLOSE_STDIN_EOF: "stdin_eof",
|
|
NM_CLOSE_FRAME_PROTOCOL: "frame_protocol_error",
|
|
NM_CLOSE_INBOUND_TOO_LARGE: "inbound_frame_too_large",
|
|
NM_CLOSE_INTERNAL_ERROR: "host_internal_error",
|
|
}
|