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

Unified Diff: chrome/browser/managed_mode/managed_mode_navigation_observer.cc

Issue 14518005: Add TabWebContentsTracker (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/managed_mode/managed_mode_navigation_observer.cc
diff --git a/chrome/browser/managed_mode/managed_mode_navigation_observer.cc b/chrome/browser/managed_mode/managed_mode_navigation_observer.cc
index 91c3ac445fbb95052be8d710802a1584b9f2b91e..2d192f8ff51b1f64a1b8082f0f20426dea7326db 100644
--- a/chrome/browser/managed_mode/managed_mode_navigation_observer.cc
+++ b/chrome/browser/managed_mode/managed_mode_navigation_observer.cc
@@ -256,6 +256,7 @@ void ManagedModePreviewInfobarDelegate::InfoBarDismissed() {
DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagedModeNavigationObserver);
ManagedModeNavigationObserver::~ManagedModeNavigationObserver() {
+ TabWebContentsTracker::RemoveObserver(this);
RemoveTemporaryException();
}
@@ -267,6 +268,7 @@ ManagedModeNavigationObserver::ManagedModeNavigationObserver(
state_(RECORDING_URLS_BEFORE_PREVIEW),
is_elevated_(false),
last_allowed_page_(-1),
+ observer_state_cleared_(false),
finished_redirects_(false) {
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
@@ -274,6 +276,39 @@ ManagedModeNavigationObserver::ManagedModeNavigationObserver(
if (!managed_user_service_->ProfileIsManaged())
is_elevated_ = true;
url_filter_ = managed_user_service_->GetURLFilterForUIThread();
+ TabWebContentsTracker::AddObserver(this);
+}
+
+void ManagedModeNavigationObserver::OnTabReplacedAt(
+ TabStripModel* tab_strip_model,
+ content::WebContents* old_contents,
+ content::WebContents* new_contents,
+ int index) {
+ if (new_contents == web_contents()) {
Bernhard Bauer 2013/04/26 16:30:10 Early-return otherwise?
+ // First, copy over some data of the old navigation observer. This only
Bernhard Bauer 2013/04/26 16:30:10 This seems...brittle. I'm okay with it, but I coul
Adrian Kuegel 2013/04/29 08:11:15 But if I copy the whole object over, it would stil
Bernhard Bauer 2013/04/29 08:39:38 Like I said, I'm okay with this, I just want to ke
+ // applies if the ClearObserverState function was not called on the new
Adrian Kuegel 2013/04/26 15:52:27 Reassigning the ManagedModeNavigationObserver to a
+ // navigation observer, because that would reset the data we are about to
+ // copy.
+ if (!observer_state_cleared_) {
+ ManagedModeNavigationObserver* observer =
+ ManagedModeNavigationObserver::FromWebContents(old_contents);
+ navigated_urls_.insert(observer->navigated_urls_.begin(),
+ observer->navigated_urls_.end());
+ if (last_allowed_page_ < 0)
+ last_allowed_page_ = observer->last_allowed_page_;
+ if (observer->warn_infobar_delegate_ && !warn_infobar_delegate_) {
+ warn_infobar_delegate_ = ManagedModeWarningInfobarDelegate::Create(
+ InfoBarService::FromWebContents(web_contents()),
+ last_allowed_page_);
+ }
+ if (observer->preview_infobar_delegate_ && !preview_infobar_delegate_) {
+ preview_infobar_delegate_ = ManagedModePreviewInfobarDelegate::Create(
Bernhard Bauer 2013/04/26 16:30:10 Doesn't InfobarTabHelper or something similar take
Adrian Kuegel 2013/04/29 08:11:15 Yes, that is possible. I guess I can remove that c
+ InfoBarService::FromWebContents(web_contents()));
+ }
+ // We don't need to copy |state_| and |finished_redirects_|, because that
+ // should be up-to-date.
+ }
+ }
}
void ManagedModeNavigationObserver::AddTemporaryException() {
@@ -387,6 +422,7 @@ void ManagedModeNavigationObserver::ClearObserverState() {
infobar_service->RemoveInfoBar(preview_infobar_delegate_);
preview_infobar_delegate_ = NULL;
}
+ observer_state_cleared_ = true;
Bernhard Bauer 2013/04/26 16:30:10 So you set this to true when we have cleared obser
Adrian Kuegel 2013/04/29 08:11:15 Yes, but that is exactly as expected. This variabl
navigated_urls_.clear();
last_url_ = GURL();
state_ = RECORDING_URLS_BEFORE_PREVIEW;

Powered by Google App Engine
This is Rietveld 408576698