Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Unified Diff: extensions/renderer/extension_port.cc

Issue 2547753002: [Extensions] Extension Port Ids and Initialization 2.0 (Closed)
Patch Set: rkaplow Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/extension_port.h ('k') | extensions/renderer/messaging_bindings.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/extension_port.cc
diff --git a/extensions/renderer/extension_port.cc b/extensions/renderer/extension_port.cc
index 7ba4571ddc3cd0546cdbdb613f42b7d72dcce24a..47a472e870ce64456ea6c256edb9f727c2a10d43 100644
--- a/extensions/renderer/extension_port.cc
+++ b/extensions/renderer/extension_port.cc
@@ -6,59 +6,36 @@
#include "content/public/renderer/render_frame.h"
#include "extensions/common/api/messaging/message.h"
+#include "extensions/common/api/messaging/port_id.h"
#include "extensions/common/extension_messages.h"
#include "extensions/renderer/script_context.h"
namespace extensions {
-ExtensionPort::ExtensionPort(ScriptContext* script_context, int local_id)
- : script_context_(script_context), local_id_(local_id) {}
+ExtensionPort::ExtensionPort(ScriptContext* script_context,
+ const PortId& id,
+ int js_id)
+ : script_context_(script_context), id_(id), js_id_(js_id) {}
ExtensionPort::~ExtensionPort() {}
-void ExtensionPort::SetGlobalId(int id) {
- global_id_ = id;
- content::RenderFrame* render_frame = script_context_->GetRenderFrame();
- for (const auto& message : pending_messages_)
- PostMessageImpl(render_frame, *message);
- if (is_disconnected_)
- SendDisconnected(render_frame);
- pending_messages_.clear();
-}
-
void ExtensionPort::PostExtensionMessage(std::unique_ptr<Message> message) {
- if (!initialized()) {
- pending_messages_.push_back(std::move(message));
- return;
- }
- PostMessageImpl(script_context_->GetRenderFrame(), *message);
-}
-
-void ExtensionPort::Close(bool close_channel) {
- is_disconnected_ = true;
- close_channel_ = close_channel;
- if (!initialized())
- return;
-
- SendDisconnected(script_context_->GetRenderFrame());
-}
-
-void ExtensionPort::PostMessageImpl(content::RenderFrame* render_frame,
- const Message& message) {
+ content::RenderFrame* render_frame = script_context_->GetRenderFrame();
// TODO(devlin): What should we do if there's no render frame? Up until now,
// we've always just dropped the messages, but we might need to figure this
// out for service workers.
if (!render_frame)
return;
render_frame->Send(new ExtensionHostMsg_PostMessage(
- render_frame->GetRoutingID(), global_id_, message));
+ render_frame->GetRoutingID(), id_, *message));
}
-void ExtensionPort::SendDisconnected(content::RenderFrame* render_frame) {
+void ExtensionPort::Close(bool close_channel) {
+ content::RenderFrame* render_frame = script_context_->GetRenderFrame();
if (!render_frame)
return;
render_frame->Send(new ExtensionHostMsg_CloseMessagePort(
- render_frame->GetRoutingID(), global_id_, close_channel_));
+ render_frame->GetRoutingID(), id_, close_channel));
}
} // namespace extensions
« no previous file with comments | « extensions/renderer/extension_port.h ('k') | extensions/renderer/messaging_bindings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698