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

Unified Diff: extensions/renderer/messaging_bindings.h

Issue 2300453002: [Extensions] Begin making Extension port initialization asynchronous (Closed)
Patch Set: Nasko's Created 4 years, 3 months 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.cc ('k') | extensions/renderer/messaging_bindings.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/messaging_bindings.h
diff --git a/extensions/renderer/messaging_bindings.h b/extensions/renderer/messaging_bindings.h
index 56a9f7fa0582e5cd946e2cfa9649f0e05387aeec..b0e9fe780b34f3c9a6ca536c0c19fd6544a62fcf 100644
--- a/extensions/renderer/messaging_bindings.h
+++ b/extensions/renderer/messaging_bindings.h
@@ -19,6 +19,7 @@ class RenderFrame;
}
namespace extensions {
+class ExtensionPort;
struct Message;
class ScriptContextSet;
@@ -60,7 +61,21 @@ class MessagingBindings : public ObjectBackedNativeHandler {
const std::string& error_message,
content::RenderFrame* restrict_to_render_frame);
+ // Returns an existing port with the given |global_id|, or null.
+ ExtensionPort* GetPortWithGlobalId(int global_id);
+
+ // Creates a new port with the given |global_id|. MessagingBindings owns the
+ // returned port.
+ ExtensionPort* CreateNewPortWithGlobalId(int global_id);
+
+ // Removes the port with the given |local_id|.
+ void RemovePortWithLocalId(int local_id);
+
+ base::WeakPtr<MessagingBindings> GetWeakPtr();
+
private:
+ using PortMap = std::map<int, std::unique_ptr<ExtensionPort>>;
+
// JS Exposed Function: Sends a message along the given channel.
void PostMessage(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -74,10 +89,34 @@ class MessagingBindings : public ObjectBackedNativeHandler {
// then call into the script context if it's been invalidated.
void BindToGC(const v8::FunctionCallbackInfo<v8::Value>& args);
+ // JS Exposed Function: Opens a new channel to an extension.
+ void OpenChannelToExtension(const v8::FunctionCallbackInfo<v8::Value>& args);
+
+ // JS Exposed Function: Opens a new channel to a native application.
+ void OpenChannelToNativeApp(const v8::FunctionCallbackInfo<v8::Value>& args);
+
+ // JS Exposed Function: Opens a new channel to a tab.
+ void OpenChannelToTab(const v8::FunctionCallbackInfo<v8::Value>& args);
+
// Helper function to close a port. See CloseChannel() for |force_close|
// documentation.
void ClosePort(int port_id, bool force_close);
+ // Sets the global id for the port with |local_id|.
+ void SetGlobalPortId(int local_id, int global_id);
+
+ int GetNextLocalId();
+
+ // Active ports, mapped by local port id.
+ PortMap ports_;
+
+ // Ports which are disconnected, but haven't been fully initialized. Once
+ // initialized and any pending messages are sent, these ports are removed.
+ PortMap disconnected_ports_;
+
+ // The next available local id for a port.
+ int next_local_id_ = 0;
+
base::WeakPtrFactory<MessagingBindings> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(MessagingBindings);
« no previous file with comments | « extensions/renderer/extension_port.cc ('k') | extensions/renderer/messaging_bindings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698