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;