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;
