| 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_; | 
|  | 
|  |