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

Unified Diff: chrome/browser/ui/search/instant_unload_handler.cc

Issue 137993020: (Try 2) InstantExtended: remove dead code related to the non-cacheable NTP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable InstantPolicyTests Created 6 years, 11 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/search/instant_unload_handler.cc
diff --git a/chrome/browser/ui/search/instant_unload_handler.cc b/chrome/browser/ui/search/instant_unload_handler.cc
deleted file mode 100644
index 2f62eefd1098d0e10543b2e74f342574186fe740..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/search/instant_unload_handler.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// 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/search/instant_unload_handler.h"
-
-#include <algorithm>
-
-#include "base/message_loop/message_loop.h"
-#include "chrome/browser/ui/browser_navigator.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_delegate.h"
-
-class InstantUnloadHandler::WebContentsDelegateImpl
- : public content::WebContentsDelegate {
- public:
- WebContentsDelegateImpl(InstantUnloadHandler* handler,
- scoped_ptr<content::WebContents> contents,
- int index)
- : handler_(handler),
- contents_(contents.Pass()),
- index_(index) {
- contents_->SetDelegate(this);
- contents_->GetRenderViewHost()->FirePageBeforeUnload(false);
- }
-
- // Overridden from content::WebContentsDelegate:
- virtual void CloseContents(content::WebContents* source) OVERRIDE {
- DCHECK_EQ(contents_, source);
- // Remove ourselves as the delegate, so that CloseContents() won't be
- // called twice, leading to double deletion (http://crbug.com/155848).
- contents_->SetDelegate(NULL);
- handler_->Destroy(this);
- }
-
- virtual void WillRunBeforeUnloadConfirm() OVERRIDE {
- contents_->SetDelegate(NULL);
- handler_->Activate(this, contents_.Pass(), index_);
- }
-
- virtual bool ShouldSuppressDialogs() OVERRIDE {
- return true;
- }
-
- private:
- InstantUnloadHandler* const handler_;
- scoped_ptr<content::WebContents> contents_;
-
- // The tab strip index |contents_| was originally at. If we add the tab back
- // to the tabstrip, we add it at this index.
- const int index_;
-
- DISALLOW_COPY_AND_ASSIGN(WebContentsDelegateImpl);
-};
-
-InstantUnloadHandler::InstantUnloadHandler(Browser* browser)
- : browser_(browser) {
-}
-
-InstantUnloadHandler::~InstantUnloadHandler() {
-}
-
-void InstantUnloadHandler::RunUnloadListenersOrDestroy(
- scoped_ptr<content::WebContents> contents,
- int index) {
- DCHECK(!contents->GetDelegate());
-
- if (!contents->NeedToFireBeforeUnload()) {
- // Tab doesn't have any beforeunload listeners and can be safely deleted.
- // However, the tab object should not be deleted immediately because when we
- // get here from BrowserInstantController::TabDeactivated, other tab
- // observers may still expect to interact with the tab before the event has
- // finished propagating.
- base::MessageLoop::current()->DeleteSoon(FROM_HERE, contents.release());
- return;
- }
-
- // Tab has beforeunload listeners. Install a delegate to run them.
- delegates_.push_back(
- new WebContentsDelegateImpl(this, contents.Pass(), index));
-}
-
-void InstantUnloadHandler::Activate(WebContentsDelegateImpl* delegate,
- scoped_ptr<content::WebContents> contents,
- int index) {
- // Remove (and delete) the delegate.
- Destroy(delegate);
-
- // Add the tab back in.
- chrome::NavigateParams params(browser_, contents.release());
- params.disposition = NEW_FOREGROUND_TAB;
- params.tabstrip_index = index;
- chrome::Navigate(&params);
-}
-
-void InstantUnloadHandler::Destroy(WebContentsDelegateImpl* delegate) {
- ScopedVector<WebContentsDelegateImpl>::iterator i =
- std::find(delegates_.begin(), delegates_.end(), delegate);
- DCHECK(i != delegates_.end());
-
- // The delegate's method is a caller on the stack, so schedule the deletion
- // for later.
- delegates_.weak_erase(i);
- base::MessageLoop::current()->DeleteSoon(FROM_HERE, delegate);
-}
« no previous file with comments | « chrome/browser/ui/search/instant_unload_handler.h ('k') | chrome/browser/ui/search/local_ntp_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698