Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1606)

Unified Diff: chrome/browser/ui/views/frame/instant_overlay_controller_views.cc

Issue 12386019: Instant: Use only one hidden WebContents per profile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/frame/instant_overlay_controller_views.cc
diff --git a/chrome/browser/ui/views/frame/instant_overlay_controller_views.cc b/chrome/browser/ui/views/frame/instant_overlay_controller_views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f3b3c0052234a4a4124e7fe9fbe35282a537098e
--- /dev/null
+++ b/chrome/browser/ui/views/frame/instant_overlay_controller_views.cc
@@ -0,0 +1,59 @@
+// Copyright 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/frame/instant_overlay_controller_views.h"
+
+#include "chrome/browser/instant/instant_model.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/view_ids.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "chrome/browser/ui/views/frame/contents_container.h"
+#include "chrome/browser/ui/views/infobars/infobar_container_view.h"
+#include "ui/views/controls/webview/webview.h"
+
+InstantOverlayControllerViews::InstantOverlayControllerViews(
+ Browser* browser,
+ ContentsContainer* contents)
+ : InstantOverlayController(browser),
+ contents_(contents) {
+}
+
+InstantOverlayControllerViews::~InstantOverlayControllerViews() {
+}
+
+void InstantOverlayControllerViews::OverlayStateChanged(
+ const InstantModel& model) {
+ if (model.overlay()) {
+ // Show the overlay.
+ if (!overlay_) {
+ overlay_.reset(new views::WebView(browser_->profile()));
+ overlay_->set_id(VIEW_ID_TAB_CONTAINER);
+ }
+ // Drop shadow is only needed if the overlay does not fill up the entire
+ // contents page.
+ bool draw_drop_shadow = !contents_->IsOverlayFullHeight(
+ model.height(), model.is_height_in_pixels());
+ contents_->SetOverlay(overlay_.get(), model.overlay(), model.height(),
+ model.is_height_in_pixels(), draw_drop_shadow);
+ overlay_->SetWebContents(model.overlay());
+ browser_->MaybeUpdateBookmarkBarStateForInstantOverlay();
+ } else if (overlay_) {
+ // Hide the overlay. SetWebContents() must happen before SetOverlay().
+ overlay_->SetWebContents(NULL);
+ contents_->SetOverlay(NULL, NULL, 0, false, false);
+ overlay_.reset();
+ }
+
+ // If an Instant overlay is added during an immersive mode reveal, the reveal
+ // view needs to stay on top.
+ // Notify infobar container of change in overlay state.
+ if (overlay_) {
+ BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_);
+ if (browser_view) {
+ browser_view->MaybeStackImmersiveRevealAtTop();
+ browser_view->infobar_container()->OverlayStateChanged(model);
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698