| Index: third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
 | 
| index 4810ed825f3ea373fa9b49eea1ac1dfe4337c79a..9d7afb28247427f0d824cd94709d224b747e1abf 100644
 | 
| --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
 | 
| +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
 | 
| @@ -911,12 +911,12 @@ int LocalDOMWindow::outerHeight() const {
 | 
|    if (!frame())
 | 
|      return 0;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return 0;
 | 
|  
 | 
| -  ChromeClient& chromeClient = host->chromeClient();
 | 
| -  if (host->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
| +  ChromeClient& chromeClient = page->chromeClient();
 | 
| +  if (page->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
|      return lroundf(chromeClient.rootWindowRect().height() *
 | 
|                     chromeClient.screenInfo().deviceScaleFactor);
 | 
|    return chromeClient.rootWindowRect().height();
 | 
| @@ -926,12 +926,12 @@ int LocalDOMWindow::outerWidth() const {
 | 
|    if (!frame())
 | 
|      return 0;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return 0;
 | 
|  
 | 
| -  ChromeClient& chromeClient = host->chromeClient();
 | 
| -  if (host->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
| +  ChromeClient& chromeClient = page->chromeClient();
 | 
| +  if (page->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
|      return lroundf(chromeClient.rootWindowRect().width() *
 | 
|                     chromeClient.screenInfo().deviceScaleFactor);
 | 
|  
 | 
| @@ -947,15 +947,19 @@ FloatSize LocalDOMWindow::getViewportSize(
 | 
|    if (!view)
 | 
|      return FloatSize();
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return FloatSize();
 | 
|  
 | 
| +  // If we have a Page, we must have a FrameHost.
 | 
| +  FrameHost* host = frame()->host();
 | 
| +  DCHECK(host);
 | 
| +
 | 
|    // The main frame's viewport size depends on the page scale. Since the
 | 
|    // initial page scale depends on the content width and is set after a
 | 
|    // layout, perform one now so queries during page load will use the up to
 | 
|    // date viewport.
 | 
| -  if (host->settings().getViewportEnabled() && frame()->isMainFrame())
 | 
| +  if (page->settings().getViewportEnabled() && frame()->isMainFrame())
 | 
|      document()->updateStyleAndLayoutIgnorePendingStylesheets();
 | 
|  
 | 
|    // FIXME: This is potentially too much work. We really only need to know the
 | 
| @@ -967,7 +971,7 @@ FloatSize LocalDOMWindow::getViewportSize(
 | 
|            ->updateStyleAndLayoutIgnorePendingStylesheets();
 | 
|    }
 | 
|  
 | 
| -  return frame()->isMainFrame() && !host->settings().getInertVisualViewport()
 | 
| +  return frame()->isMainFrame() && !page->settings().getInertVisualViewport()
 | 
|               ? FloatSize(host->visualViewport().visibleRect().size())
 | 
|               : FloatSize(view->visibleContentRect(scrollbarInclusion).size());
 | 
|  }
 | 
| @@ -994,12 +998,12 @@ int LocalDOMWindow::screenX() const {
 | 
|    if (!frame())
 | 
|      return 0;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return 0;
 | 
|  
 | 
| -  ChromeClient& chromeClient = host->chromeClient();
 | 
| -  if (host->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
| +  ChromeClient& chromeClient = page->chromeClient();
 | 
| +  if (page->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
|      return lroundf(chromeClient.rootWindowRect().x() *
 | 
|                     chromeClient.screenInfo().deviceScaleFactor);
 | 
|    return chromeClient.rootWindowRect().x();
 | 
| @@ -1009,22 +1013,22 @@ int LocalDOMWindow::screenY() const {
 | 
|    if (!frame())
 | 
|      return 0;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return 0;
 | 
|  
 | 
| -  ChromeClient& chromeClient = host->chromeClient();
 | 
| -  if (host->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
| +  ChromeClient& chromeClient = page->chromeClient();
 | 
| +  if (page->settings().getReportScreenSizeInPhysicalPixelsQuirk())
 | 
|      return lroundf(chromeClient.rootWindowRect().y() *
 | 
|                     chromeClient.screenInfo().deviceScaleFactor);
 | 
|    return chromeClient.rootWindowRect().y();
 | 
|  }
 | 
|  
 | 
|  double LocalDOMWindow::scrollX() const {
 | 
| -  if (!frame() || !frame()->host())
 | 
| +  if (!frame() || !frame()->page())
 | 
|      return 0;
 | 
|  
 | 
| -  if (!frame()->host()->settings().getInertVisualViewport())
 | 
| +  if (!frame()->page()->settings().getInertVisualViewport())
 | 
|      return m_visualViewport->pageX();
 | 
|  
 | 
|    FrameView* view = frame()->view();
 | 
| @@ -1039,10 +1043,10 @@ double LocalDOMWindow::scrollX() const {
 | 
|  }
 | 
|  
 | 
|  double LocalDOMWindow::scrollY() const {
 | 
| -  if (!frame() || !frame()->host())
 | 
| +  if (!frame() || !frame()->page())
 | 
|      return 0;
 | 
|  
 | 
| -  if (!frame()->host()->settings().getInertVisualViewport())
 | 
| +  if (!frame()->page()->settings().getInertVisualViewport())
 | 
|      return m_visualViewport->pageY();
 | 
|  
 | 
|    FrameView* view = frame()->view();
 | 
| @@ -1167,14 +1171,14 @@ void LocalDOMWindow::scrollBy(double x,
 | 
|    if (!view)
 | 
|      return;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return;
 | 
|  
 | 
|    x = ScrollableArea::normalizeNonFiniteScroll(x);
 | 
|    y = ScrollableArea::normalizeNonFiniteScroll(y);
 | 
|  
 | 
| -  ScrollableArea* viewport = host->settings().getInertVisualViewport()
 | 
| +  ScrollableArea* viewport = page->settings().getInertVisualViewport()
 | 
|                                   ? view->layoutViewportScrollableArea()
 | 
|                                   : view->getScrollableArea();
 | 
|  
 | 
| @@ -1207,8 +1211,8 @@ void LocalDOMWindow::scrollTo(double x, double y) const {
 | 
|    if (!view)
 | 
|      return;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return;
 | 
|  
 | 
|    x = ScrollableArea::normalizeNonFiniteScroll(x);
 | 
| @@ -1221,7 +1225,7 @@ void LocalDOMWindow::scrollTo(double x, double y) const {
 | 
|  
 | 
|    ScrollOffset layoutOffset(x * frame()->pageZoomFactor(),
 | 
|                              y * frame()->pageZoomFactor());
 | 
| -  ScrollableArea* viewport = host->settings().getInertVisualViewport()
 | 
| +  ScrollableArea* viewport = page->settings().getInertVisualViewport()
 | 
|                                   ? view->layoutViewportScrollableArea()
 | 
|                                   : view->getScrollableArea();
 | 
|    viewport->setScrollOffset(layoutOffset, ProgrammaticScroll,
 | 
| @@ -1236,8 +1240,8 @@ void LocalDOMWindow::scrollTo(const ScrollToOptions& scrollToOptions) const {
 | 
|    if (!view)
 | 
|      return;
 | 
|  
 | 
| -  FrameHost* host = frame()->host();
 | 
| -  if (!host)
 | 
| +  Page* page = frame()->page();
 | 
| +  if (!page)
 | 
|      return;
 | 
|  
 | 
|    // It is only necessary to have an up-to-date layout if the position may be
 | 
| @@ -1250,7 +1254,7 @@ void LocalDOMWindow::scrollTo(const ScrollToOptions& scrollToOptions) const {
 | 
|    double scaledX = 0.0;
 | 
|    double scaledY = 0.0;
 | 
|  
 | 
| -  ScrollableArea* viewport = host->settings().getInertVisualViewport()
 | 
| +  ScrollableArea* viewport = page->settings().getInertVisualViewport()
 | 
|                                   ? view->layoutViewportScrollableArea()
 | 
|                                   : view->getScrollableArea();
 | 
|  
 | 
| 
 |