Move the call to mojo::View::Embed to HTMLIFrameElement
This CL prepares us to expose the imported and exported service providers to
JavaScript. We can't quite do that yet becaues the API on mojo::View isn't
ready for us. However, we can get started by moving the call to Embed into
HTMLIFrameElement.
R=eseidel@chromium.org
Review URL: https://codereview.chromium.org/793393003
diff --git a/sky/engine/core/html/HTMLIFrameElement.cpp b/sky/engine/core/html/HTMLIFrameElement.cpp
index 52da8ca..4717866 100644
--- a/sky/engine/core/html/HTMLIFrameElement.cpp
+++ b/sky/engine/core/html/HTMLIFrameElement.cpp
@@ -66,9 +66,12 @@
return;
KURL url = document().completeURL(urlString);
- m_contentView = parentFrame->loaderClient()->createChildFrame(url);
- if (m_contentView)
- m_contentView->AddObserver(this);
+ m_contentView = parentFrame->loaderClient()->createChildFrame();
+ if (!m_contentView)
+ return;
+
+ m_contentView->Embed(mojo::String::From(url.string().utf8().data()));
+ m_contentView->AddObserver(this);
}
}
diff --git a/sky/engine/core/loader/EmptyClients.h b/sky/engine/core/loader/EmptyClients.h
index a0a5903..cba0251 100644
--- a/sky/engine/core/loader/EmptyClients.h
+++ b/sky/engine/core/loader/EmptyClients.h
@@ -123,7 +123,7 @@
virtual void didStopLoading() override { }
virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& = String()) override { }
- virtual mojo::View* createChildFrame(const KURL&) override { return nullptr; }
+ virtual mojo::View* createChildFrame() override { return nullptr; }
virtual void transitionToCommittedForNewPage() override { }
diff --git a/sky/engine/core/loader/FrameLoaderClient.h b/sky/engine/core/loader/FrameLoaderClient.h
index 889cb97..dbdee58 100644
--- a/sky/engine/core/loader/FrameLoaderClient.h
+++ b/sky/engine/core/loader/FrameLoaderClient.h
@@ -93,7 +93,7 @@
virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& suggestedName = String()) = 0;
- virtual mojo::View* createChildFrame(const KURL&) = 0;
+ virtual mojo::View* createChildFrame() = 0;
// Transmits the change in the set of watched CSS selectors property
// that match any element on the frame.
diff --git a/sky/engine/public/web/WebFrameClient.h b/sky/engine/public/web/WebFrameClient.h
index 18c3e6a..1721bf0 100644
--- a/sky/engine/public/web/WebFrameClient.h
+++ b/sky/engine/public/web/WebFrameClient.h
@@ -69,7 +69,7 @@
// until frameDetached() is called on it.
// Note: If you override this, you should almost certainly be overriding
// frameDetached().
- virtual mojo::View* createChildFrame(const WebURL& url) { return nullptr; }
+ virtual mojo::View* createChildFrame() { return nullptr; }
// This frame has been detached from the view, but has not been closed yet.
// TODO(mpcomplete): reuse these.
diff --git a/sky/engine/web/FrameLoaderClientImpl.cpp b/sky/engine/web/FrameLoaderClientImpl.cpp
index 108b52d..5d820bb 100644
--- a/sky/engine/web/FrameLoaderClientImpl.cpp
+++ b/sky/engine/web/FrameLoaderClientImpl.cpp
@@ -246,11 +246,10 @@
}
}
-mojo::View* FrameLoaderClientImpl::createChildFrame(const KURL& url)
+mojo::View* FrameLoaderClientImpl::createChildFrame()
{
- if (m_webFrame->client()) {
- return m_webFrame->client()->createChildFrame(url);
- }
+ if (m_webFrame->client())
+ return m_webFrame->client()->createChildFrame();
ASSERT_NOT_REACHED();
return nullptr;
}
diff --git a/sky/engine/web/FrameLoaderClientImpl.h b/sky/engine/web/FrameLoaderClientImpl.h
index 9a2a16e..bd16379 100644
--- a/sky/engine/web/FrameLoaderClientImpl.h
+++ b/sky/engine/web/FrameLoaderClientImpl.h
@@ -73,7 +73,7 @@
virtual void didStopLoading() override;
virtual void progressEstimateChanged(double progressEstimate) override;
virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& suggestedName = String()) override;
- virtual mojo::View* createChildFrame(const KURL&) override;
+ virtual mojo::View* createChildFrame() override;
virtual void selectorMatchChanged(const Vector<String>& addedSelectors, const Vector<String>& removedSelectors) override;
virtual void transitionToCommittedForNewPage() override;
virtual void didChangeScrollOffset() override;
diff --git a/sky/viewer/document_view.cc b/sky/viewer/document_view.cc
index e7cc011..71e6726 100644
--- a/sky/viewer/document_view.cc
+++ b/sky/viewer/document_view.cc
@@ -204,15 +204,13 @@
return screen;
}
-mojo::View* DocumentView::createChildFrame(const blink::WebURL& url) {
+mojo::View* DocumentView::createChildFrame() {
if (!root_)
return nullptr;
mojo::View* child = root_->view_manager()->CreateView();
child->SetVisible(true);
root_->AddChild(child);
- child->Embed(mojo::String::From(url.string().utf8()));
-
return child;
}
diff --git a/sky/viewer/document_view.h b/sky/viewer/document_view.h
index a5151b5..05509bc 100644
--- a/sky/viewer/document_view.h
+++ b/sky/viewer/document_view.h
@@ -82,7 +82,7 @@
blink::WebScreenInfo screenInfo() override;
// WebFrameClient methods:
- mojo::View* createChildFrame(const blink::WebURL& url) override;
+ mojo::View* createChildFrame() override;
void frameDetached(blink::WebFrame*) override;
blink::WebNavigationPolicy decidePolicyForNavigation(
const blink::WebFrameClient::NavigationPolicyInfo& info) override;