Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / renderer / web_ui_mojo.cc
index 21d85da..968ca52 100644 (file)
@@ -9,8 +9,8 @@
 #include "content/public/renderer/render_view.h"
 #include "content/renderer/web_ui_mojo_context_state.h"
 #include "gin/per_context_data.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
 #include "third_party/WebKit/public/web/WebKit.h"
+#include "third_party/WebKit/public/web/WebLocalFrame.h"
 #include "third_party/WebKit/public/web/WebView.h"
 #include "v8/include/v8.h"
 
@@ -41,18 +41,14 @@ void WebUIMojo::MainFrameObserver::WillReleaseScriptContext(
   web_ui_mojo_->DestroyContextState(context);
 }
 
+void WebUIMojo::MainFrameObserver::DidFinishDocumentLoad() {
+  web_ui_mojo_->OnDidFinishDocumentLoad();
+}
+
 WebUIMojo::WebUIMojo(RenderView* render_view)
     : RenderViewObserver(render_view),
       RenderViewObserverTracker<WebUIMojo>(render_view),
       main_frame_observer_(this) {
-  CreateContextState();
-}
-
-void WebUIMojo::SetBrowserHandle(mojo::ScopedMessagePipeHandle handle) {
-  v8::HandleScope handle_scope(blink::mainThreadIsolate());
-  WebUIMojoContextState* state = GetContextState();
-  if (state)
-    state->SetHandle(handle.Pass());
 }
 
 WebUIMojo::~WebUIMojo() {
@@ -60,7 +56,8 @@ WebUIMojo::~WebUIMojo() {
 
 void WebUIMojo::CreateContextState() {
   v8::HandleScope handle_scope(blink::mainThreadIsolate());
-  blink::WebFrame* frame = render_view()->GetWebView()->mainFrame();
+  blink::WebLocalFrame* frame =
+      render_view()->GetWebView()->mainFrame()->toWebLocalFrame();
   v8::Handle<v8::Context> context = frame->mainWorldScriptContext();
   gin::PerContextData* context_data = gin::PerContextData::From(context);
   WebUIMojoContextStateData* data = new WebUIMojoContextStateData;
@@ -76,8 +73,16 @@ void WebUIMojo::DestroyContextState(v8::Handle<v8::Context> context) {
   context_data->RemoveUserData(kWebUIMojoContextStateKey);
 }
 
+void WebUIMojo::OnDidFinishDocumentLoad() {
+  v8::HandleScope handle_scope(blink::mainThreadIsolate());
+  WebUIMojoContextState* state = GetContextState();
+  if (state)
+    state->Run();
+}
+
 WebUIMojoContextState* WebUIMojo::GetContextState() {
-  blink::WebFrame* frame = render_view()->GetWebView()->mainFrame();
+  blink::WebLocalFrame* frame =
+      render_view()->GetWebView()->mainFrame()->toWebLocalFrame();
   v8::HandleScope handle_scope(blink::mainThreadIsolate());
   v8::Handle<v8::Context> context = frame->mainWorldScriptContext();
   gin::PerContextData* context_data = gin::PerContextData::From(context);
@@ -89,7 +94,11 @@ WebUIMojoContextState* WebUIMojo::GetContextState() {
   return context_state ? context_state->state.get() : NULL;
 }
 
-void WebUIMojo::DidClearWindowObject(blink::WebFrame* frame, int world_id) {
+void WebUIMojo::DidCreateDocumentElement(blink::WebLocalFrame* frame) {
+  CreateContextState();
+}
+
+void WebUIMojo::DidClearWindowObject(blink::WebLocalFrame* frame) {
   if (frame != render_view()->GetWebView()->mainFrame())
     return;
 
@@ -106,7 +115,6 @@ void WebUIMojo::DidClearWindowObject(blink::WebFrame* frame, int world_id) {
 
   v8::HandleScope handle_scope(blink::mainThreadIsolate());
   DestroyContextState(frame->mainWorldScriptContext());
-  CreateContextState();
 }
 
 }  // namespace content