| Index: content/renderer/web_ui_mojo_context_state.h
 | 
| diff --git a/content/renderer/web_ui_mojo_context_state.h b/content/renderer/web_ui_mojo_context_state.h
 | 
| index e4eb0a4ed58dd2fabe8f783ba655bffafaa9d7bc..4ce995fdf177bd2fffef039fe9709b7853f7d903 100644
 | 
| --- a/content/renderer/web_ui_mojo_context_state.h
 | 
| +++ b/content/renderer/web_ui_mojo_context_state.h
 | 
| @@ -10,6 +10,7 @@
 | 
|  
 | 
|  #include "base/memory/scoped_ptr.h"
 | 
|  #include "base/memory/scoped_vector.h"
 | 
| +#include "base/memory/weak_ptr.h"
 | 
|  #include "gin/modules/module_registry_observer.h"
 | 
|  #include "mojo/public/cpp/system/core.h"
 | 
|  #include "v8/include/v8.h"
 | 
| @@ -21,20 +22,24 @@ class WebURLResponse;
 | 
|  
 | 
|  namespace gin {
 | 
|  class ContextHolder;
 | 
| +class Runner;
 | 
|  struct PendingModule;
 | 
|  }
 | 
|  
 | 
|  namespace content {
 | 
|  
 | 
| +class RenderViewImpl;
 | 
|  class ResourceFetcher;
 | 
|  class WebUIRunner;
 | 
|  
 | 
|  // WebUIMojoContextState manages the modules needed for mojo bindings. It does
 | 
|  // this by way of gin. Non-builtin modules are downloaded by way of
 | 
|  // ResourceFetchers.
 | 
| -class WebUIMojoContextState : public gin::ModuleRegistryObserver {
 | 
| +class WebUIMojoContextState
 | 
| +    : public gin::ModuleRegistryObserver,
 | 
| +      public base::SupportsWeakPtr<WebUIMojoContextState> {
 | 
|   public:
 | 
| -  WebUIMojoContextState(blink::WebFrame* frame,
 | 
| +  WebUIMojoContextState(RenderViewImpl* render_view,
 | 
|                          v8::Handle<v8::Context> context);
 | 
|    virtual ~WebUIMojoContextState();
 | 
|  
 | 
| @@ -47,6 +52,12 @@ class WebUIMojoContextState : public gin::ModuleRegistryObserver {
 | 
|   private:
 | 
|    class Loader;
 | 
|  
 | 
| +  // The implementation of the 'main' module. Calls the closure passed in and
 | 
| +  // then notifies our RenderView that we've run the main closure.
 | 
| +  void RunMain(base::WeakPtr<gin::Runner> runner,
 | 
| +               mojo::ScopedMessagePipeHandle* handle,
 | 
| +               v8::Handle<v8::Value> module);
 | 
| +
 | 
|    // Invokes FetchModule() for any modules that have not already been
 | 
|    // downloaded.
 | 
|    void FetchModules(const std::vector<std::string>& ids);
 | 
| @@ -67,6 +78,10 @@ class WebUIMojoContextState : public gin::ModuleRegistryObserver {
 | 
|    // Frame script is executed in. Also used to download resources.
 | 
|    blink::WebFrame* frame_;
 | 
|  
 | 
| +  // We keep the RenderViewImpl so we can send a message once the main callback
 | 
| +  // has run.
 | 
| +  RenderViewImpl* render_view_impl_;
 | 
| +
 | 
|    // See description above getter.
 | 
|    bool module_added_;
 | 
|  
 | 
| 
 |