Chromium Code Reviews| Index: content/renderer/web_ui_mojo_context_state.cc |
| diff --git a/content/renderer/web_ui_mojo_context_state.cc b/content/renderer/web_ui_mojo_context_state.cc |
| index f1ff5f4896a058ee2ec87a868a4467211387fcf6..d404000a546cdbe1d87f6c8bc6f4f79e2bec937c 100644 |
| --- a/content/renderer/web_ui_mojo_context_state.cc |
| +++ b/content/renderer/web_ui_mojo_context_state.cc |
| @@ -7,6 +7,7 @@ |
| #include "base/bind.h" |
| #include "base/stl_util.h" |
| #include "content/public/renderer/resource_fetcher.h" |
| +#include "content/renderer/render_view_impl.h" |
| #include "content/renderer/web_ui_runner.h" |
| #include "gin/converter.h" |
| #include "gin/modules/module_registry.h" |
| @@ -19,6 +20,7 @@ |
| #include "third_party/WebKit/public/platform/WebURLResponse.h" |
| #include "third_party/WebKit/public/web/WebFrame.h" |
| #include "third_party/WebKit/public/web/WebScriptSource.h" |
| +#include "third_party/WebKit/public/web/WebView.h" |
| using v8::Context; |
| using v8::HandleScope; |
| @@ -35,24 +37,14 @@ namespace { |
| // TODO(sky): move this into some common place. |
| const char kModulePrefix[] = "chrome://mojo/"; |
| -void RunMain(base::WeakPtr<gin::Runner> runner, |
| - mojo::ScopedMessagePipeHandle* handle, |
| - v8::Handle<v8::Value> module) { |
| - v8::Isolate* isolate = runner->GetContextHolder()->isolate(); |
| - v8::Handle<v8::Function> start; |
| - CHECK(gin::ConvertFromV8(isolate, module, &start)); |
| - v8::Handle<v8::Value> args[] = { |
| - gin::ConvertToV8(isolate, mojo::Handle(handle->release().value())) }; |
| - runner->Call(start, runner->global(), 1, args); |
| -} |
| - |
| } // namespace |
| // WebUIMojo ------------------------------------------------------------------- |
| -WebUIMojoContextState::WebUIMojoContextState(blink::WebFrame* frame, |
| +WebUIMojoContextState::WebUIMojoContextState(RenderViewImpl* render_view, |
| v8::Handle<v8::Context> context) |
| - : frame_(frame), |
| + : frame_(render_view->GetWebView()->mainFrame()), |
| + render_view_impl_(render_view), |
| module_added_(false) { |
| gin::PerContextData* context_data = gin::PerContextData::From(context); |
| gin::ContextHolder* context_holder = context_data->context_holder(); |
| @@ -78,7 +70,21 @@ void WebUIMojoContextState::SetHandle(mojo::ScopedMessagePipeHandle handle) { |
| gin::ModuleRegistry::From(context_holder->context())->LoadModule( |
| context_holder->isolate(), |
| "main", |
| - base::Bind(RunMain, runner_->GetWeakPtr(), base::Owned(passed_handle))); |
| + base::Bind(&WebUIMojoContextState::RunMain, |
| + AsWeakPtr(), |
| + base::Owned(passed_handle))); |
| +} |
| + |
| +void WebUIMojoContextState::RunMain(mojo::ScopedMessagePipeHandle* handle, |
| + v8::Handle<v8::Value> module) { |
| + v8::Isolate* isolate = runner_->GetContextHolder()->isolate(); |
| + v8::Handle<v8::Function> start; |
| + CHECK(gin::ConvertFromV8(isolate, module, &start)); |
| + v8::Handle<v8::Value> args[] = { |
| + gin::ConvertToV8(isolate, mojo::Handle(handle->release().value())) }; |
| + runner_->Call(start, runner_->global(), 1, args); |
| + |
| + render_view_impl_->WebUIMojoMainRan(); |
|
jam
2014/07/25 21:29:58
here, you can use frame_ to get to a RenderFrame,
|
| } |
| void WebUIMojoContextState::FetchModules(const std::vector<std::string>& ids) { |