blob: 1850dbfb48a289dc166d1935e9a3bbfcf4337635 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/common/api/messaging/port_context.h"
#include "base/debug/crash_logging.h"
#include "extensions/common/extension_id.h"
namespace extensions {
PortContext::PortContext() = default;
PortContext::~PortContext() = default;
PortContext::PortContext(const PortContext& other) = default;
PortContext::FrameContext::FrameContext(int routing_id)
: routing_id(routing_id) {}
PortContext::FrameContext::FrameContext() = default;
PortContext::WorkerContext::WorkerContext(int thread_id,
int64_t version_id,
int render_process_id,
const ExtensionId& extension_id)
: thread_id(thread_id),
version_id(version_id),
render_process_id(render_process_id),
extension_id(extension_id) {}
PortContext::WorkerContext::WorkerContext() = default;
PortContext PortContext::ForFrame(int routing_id) {
PortContext context;
context.frame = FrameContext(routing_id);
return context;
}
PortContext PortContext::ForWorker(int thread_id,
int64_t version_id,
int render_process_id,
const ExtensionId& extension_id) {
PortContext context;
context.worker =
WorkerContext(thread_id, version_id, render_process_id, extension_id);
return context;
}
PortContext PortContext::ForNativeHost() {
return PortContext();
}
namespace debug {
namespace {
base::debug::CrashKeyString* GetServiceWorkerExtensionIdCrashKey() {
static auto* crash_key = base::debug::AllocateCrashKeyString(
"PortContext-worker-extension_id", base::debug::CrashKeySize::Size64);
return crash_key;
}
} // namespace
ScopedPortContextCrashKeys::ScopedPortContextCrashKeys(
const PortContext& port_context) {
if (port_context.is_for_service_worker()) {
extension_id_.emplace(GetServiceWorkerExtensionIdCrashKey(),
port_context.worker->extension_id);
}
}
ScopedPortContextCrashKeys::~ScopedPortContextCrashKeys() = default;
} // namespace debug
} // namespace extensions