| Index: chrome/renderer/chrome_render_view_observer.cc
|
| diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
|
| index 935c6e9e8089d8bab27f8ab23a14f9c9a325c3cd..dbbb0f0ee1068b66cbb3a677cd2e294cffa568e2 100644
|
| --- a/chrome/renderer/chrome_render_view_observer.cc
|
| +++ b/chrome/renderer/chrome_render_view_observer.cc
|
| @@ -22,6 +22,7 @@
|
| #include "chrome/renderer/chrome_render_process_observer.h"
|
| #include "chrome/renderer/content_settings_observer.h"
|
| #include "chrome/renderer/extensions/extension_dispatcher.h"
|
| +#include "chrome/renderer/extensions/extension_helper.h"
|
| #include "chrome/renderer/external_host_bindings.h"
|
| #include "chrome/renderer/frame_sniffer.h"
|
| #include "chrome/renderer/prerender/prerender_helper.h"
|
| @@ -29,6 +30,7 @@
|
| #include "chrome/renderer/translate_helper.h"
|
| #include "chrome/renderer/webview_color_overlay.h"
|
| #include "content/public/common/bindings_policy.h"
|
| +#include "content/public/common/view_type.h"
|
| #include "content/public/renderer/render_view.h"
|
| #include "content/public/renderer/content_renderer_client.h"
|
| #include "net/base/data_url.h"
|
| @@ -93,6 +95,10 @@ static const size_t kMaxIndexChars = 65535;
|
| static const int kThumbnailWidth = 212;
|
| static const int kThumbnailHeight = 132;
|
|
|
| +// The default layout width for pages when fixed layout is enabled.
|
| +static const int kDefaultLayoutWidth = 980;
|
| +static const int kDefaultLayoutHeight = 640;
|
| +
|
| // Constants for UMA statistic collection.
|
| static const char kWWWDotGoogleDotCom[] = "www.google.com";
|
| static const char kMailDotGoogleDotCom[] = "mail.google.com";
|
| @@ -372,6 +378,27 @@ void ChromeRenderViewObserver::OnSetAsInterstitial() {
|
| }
|
|
|
| void ChromeRenderViewObserver::Navigate(const GURL& url) {
|
| + ExtensionHelper* extension_helper = ExtensionHelper::Get(render_view());
|
| + bool is_tab_contents = extension_helper &&
|
| + extension_helper->view_type() == content::VIEW_TYPE_TAB_CONTENTS;
|
| + const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
|
| + // Only use fixed layout on tab contents.
|
| + if (is_tab_contents && cmd_line->HasSwitch(switches::kEnableFixedLayout)) {
|
| + WebSize viewSize = render_view()->GetWebView()->size();
|
| + int layoutHeight =
|
| + viewSize.height ?
|
| + viewSize.height * kDefaultLayoutWidth / viewSize.width :
|
| + kDefaultLayoutHeight;
|
| + WebSize layout_size(kDefaultLayoutWidth, layoutHeight);
|
| + render_view()->GetWebView()->enableFixedLayoutMode(true);
|
| + render_view()->GetWebView()->setFixedLayoutSize(layout_size);
|
| + render_view()->GetWebView()->
|
| + setShouldLayoutFixedElementsRelativeToFrame(true);
|
| + } else {
|
| + render_view()->GetWebView()->enableFixedLayoutMode(false);
|
| + render_view()->GetWebView()->
|
| + setShouldLayoutFixedElementsRelativeToFrame(false);
|
| + }
|
| // Execute cache clear operations that were postponed until a navigation
|
| // event (including tab reload).
|
| if (chrome_render_process_observer_)
|
|
|