| Index: content/browser/web_contents/web_contents_impl.h | 
| diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h | 
| index 829f02447bf2663d1c21c67510f726f6e64a53fc..e4b786fd7f49396fa2ce9ee355568552e6e238c0 100644 | 
| --- a/content/browser/web_contents/web_contents_impl.h | 
| +++ b/content/browser/web_contents/web_contents_impl.h | 
| @@ -75,6 +75,7 @@ class TestWebContents; | 
| class TextInputManager; | 
| class WakeLockServiceContext; | 
| class WebContentsAudioMuter; | 
| +class WebContentsBindingSet; | 
| class WebContentsDelegate; | 
| class WebContentsImpl; | 
| class WebContentsView; | 
| @@ -246,6 +247,15 @@ class CONTENT_EXPORT WebContentsImpl | 
| const std::string& host, | 
| double level); | 
|  | 
| +  // Adds a new binding set to the WebContents. Returns a closure which may be | 
| +  // used to remove the binding set at any time. The closure is safe to call | 
| +  // even after WebContents destruction. | 
| +  // | 
| +  // |binding_set| is not owned and must either outlive this WebContents or be | 
| +  // explicitly removed before being destroyed. | 
| +  base::Closure AddBindingSet(const std::string& interface_name, | 
| +                              WebContentsBindingSet* binding_set); | 
| + | 
| // WebContents ------------------------------------------------------ | 
| WebContentsDelegate* GetDelegate() override; | 
| void SetDelegate(WebContentsDelegate* delegate) override; | 
| @@ -427,6 +437,10 @@ class CONTENT_EXPORT WebContentsImpl | 
| // RenderFrameHostDelegate --------------------------------------------------- | 
| bool OnMessageReceived(RenderFrameHost* render_frame_host, | 
| const IPC::Message& message) override; | 
| +  void OnAssociatedInterfaceRequest( | 
| +      RenderFrameHost* render_frame_host, | 
| +      const std::string& interface_name, | 
| +      mojo::ScopedInterfaceEndpointHandle handle) override; | 
| const GURL& GetMainFrameLastCommittedURL() const override; | 
| void RenderFrameCreated(RenderFrameHost* render_frame_host) override; | 
| void RenderFrameDeleted(RenderFrameHost* render_frame_host) override; | 
| @@ -1105,6 +1119,9 @@ class CONTENT_EXPORT WebContentsImpl | 
| // Returns the FindRequestManager, or creates one if it doesn't already exist. | 
| FindRequestManager* GetOrCreateFindRequestManager(); | 
|  | 
| +  // Removes a registered WebContentsBindingSet by interface name. | 
| +  void RemoveBindingSet(const std::string& interface_name); | 
| + | 
| // Data for core operation --------------------------------------------------- | 
|  | 
| // Delegate for notifying our owner about stuff. Not owned by us. | 
| @@ -1139,6 +1156,9 @@ class CONTENT_EXPORT WebContentsImpl | 
| // the observer list then. | 
| base::ObserverList<WebContentsObserver> observers_; | 
|  | 
| +  // Associated interface binding sets attached to this WebContents. | 
| +  std::map<std::string, WebContentsBindingSet*> binding_sets_; | 
| + | 
| // True if this tab was opened by another tab. This is not unset if the opener | 
| // is closed. | 
| bool created_with_opener_; | 
|  |