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

Side by Side Diff: chrome/browser/prerender/prerender_manager.cc

Issue 1440593004: Make operators on scoped_ptr match the ones defined for std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrequals: followupfix-after-rebase Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prerender/prerender_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 suppressed_dialog_(false) { 127 suppressed_dialog_(false) {
128 tab_->SetDelegate(this); 128 tab_->SetDelegate(this);
129 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 129 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
130 FROM_HERE, 130 FROM_HERE,
131 base::Bind(&OnCloseWebContentsDeleter::ScheduleWebContentsForDeletion, 131 base::Bind(&OnCloseWebContentsDeleter::ScheduleWebContentsForDeletion,
132 AsWeakPtr(), true), 132 AsWeakPtr(), true),
133 base::TimeDelta::FromSeconds(kDeleteWithExtremePrejudiceSeconds)); 133 base::TimeDelta::FromSeconds(kDeleteWithExtremePrejudiceSeconds));
134 } 134 }
135 135
136 void CloseContents(WebContents* source) override { 136 void CloseContents(WebContents* source) override {
137 DCHECK_EQ(tab_, source); 137 DCHECK_EQ(tab_.get(), source);
138 ScheduleWebContentsForDeletion(false); 138 ScheduleWebContentsForDeletion(false);
139 } 139 }
140 140
141 void SwappedOut(WebContents* source) override { 141 void SwappedOut(WebContents* source) override {
142 DCHECK_EQ(tab_, source); 142 DCHECK_EQ(tab_.get(), source);
143 ScheduleWebContentsForDeletion(false); 143 ScheduleWebContentsForDeletion(false);
144 } 144 }
145 145
146 bool ShouldSuppressDialogs(WebContents* source) override { 146 bool ShouldSuppressDialogs(WebContents* source) override {
147 // Use this as a proxy for getting statistics on how often we fail to honor 147 // Use this as a proxy for getting statistics on how often we fail to honor
148 // the beforeunload event. 148 // the beforeunload event.
149 DCHECK_EQ(tab_, source); 149 DCHECK_EQ(tab_.get(), source);
150 suppressed_dialog_ = true; 150 suppressed_dialog_ = true;
151 return true; 151 return true;
152 } 152 }
153 153
154 private: 154 private:
155 static const int kDeleteWithExtremePrejudiceSeconds = 3; 155 static const int kDeleteWithExtremePrejudiceSeconds = 3;
156 156
157 void ScheduleWebContentsForDeletion(bool timeout) { 157 void ScheduleWebContentsForDeletion(bool timeout) {
158 UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterTimeout", timeout); 158 UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterTimeout", timeout);
159 UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterSuppressedDialog", 159 UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterSuppressedDialog",
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 } 817 }
818 }; 818 };
819 819
820 PrerenderManager::PrerenderData::PrerenderData(PrerenderManager* manager, 820 PrerenderManager::PrerenderData::PrerenderData(PrerenderManager* manager,
821 PrerenderContents* contents, 821 PrerenderContents* contents,
822 base::TimeTicks expiry_time) 822 base::TimeTicks expiry_time)
823 : manager_(manager), 823 : manager_(manager),
824 contents_(contents), 824 contents_(contents),
825 handle_count_(0), 825 handle_count_(0),
826 expiry_time_(expiry_time) { 826 expiry_time_(expiry_time) {
827 DCHECK_NE(static_cast<PrerenderContents*>(NULL), contents_); 827 DCHECK(contents_);
828 } 828 }
829 829
830 PrerenderManager::PrerenderData::~PrerenderData() { 830 PrerenderManager::PrerenderData::~PrerenderData() {
831 } 831 }
832 832
833 void PrerenderManager::PrerenderData::MakeIntoMatchCompleteReplacement() { 833 void PrerenderManager::PrerenderData::MakeIntoMatchCompleteReplacement() {
834 DCHECK(contents_); 834 DCHECK(contents_);
835 contents_->set_match_complete_status( 835 contents_->set_match_complete_status(
836 PrerenderContents::MATCH_COMPLETE_REPLACED); 836 PrerenderContents::MATCH_COMPLETE_REPLACED);
837 PrerenderData* to_delete = new PrerenderData(manager_, contents_.release(), 837 PrerenderData* to_delete = new PrerenderData(manager_, contents_.release(),
838 expiry_time_); 838 expiry_time_);
839 contents_.reset(to_delete->contents_->CreateMatchCompleteReplacement()); 839 contents_.reset(to_delete->contents_->CreateMatchCompleteReplacement());
840 manager_->to_delete_prerenders_.push_back(to_delete); 840 manager_->to_delete_prerenders_.push_back(to_delete);
841 } 841 }
842 842
843 void PrerenderManager::PrerenderData::OnHandleCreated(PrerenderHandle* handle) { 843 void PrerenderManager::PrerenderData::OnHandleCreated(PrerenderHandle* handle) {
844 DCHECK_NE(static_cast<PrerenderContents*>(NULL), contents_); 844 DCHECK(contents_);
845 ++handle_count_; 845 ++handle_count_;
846 contents_->AddObserver(handle); 846 contents_->AddObserver(handle);
847 } 847 }
848 848
849 void PrerenderManager::PrerenderData::OnHandleNavigatedAway( 849 void PrerenderManager::PrerenderData::OnHandleNavigatedAway(
850 PrerenderHandle* handle) { 850 PrerenderHandle* handle) {
851 DCHECK_LT(0, handle_count_); 851 DCHECK_LT(0, handle_count_);
852 DCHECK_NE(static_cast<PrerenderContents*>(NULL), contents_); 852 DCHECK(contents_);
853 if (abandon_time_.is_null()) 853 if (abandon_time_.is_null())
854 abandon_time_ = base::TimeTicks::Now(); 854 abandon_time_ = base::TimeTicks::Now();
855 // We intentionally don't decrement the handle count here, so that the 855 // We intentionally don't decrement the handle count here, so that the
856 // prerender won't be canceled until it times out. 856 // prerender won't be canceled until it times out.
857 manager_->SourceNavigatedAway(this); 857 manager_->SourceNavigatedAway(this);
858 } 858 }
859 859
860 void PrerenderManager::PrerenderData::OnHandleCanceled( 860 void PrerenderManager::PrerenderData::OnHandleCanceled(
861 PrerenderHandle* handle) { 861 PrerenderHandle* handle) {
862 DCHECK_LT(0, handle_count_); 862 DCHECK_LT(0, handle_count_);
863 DCHECK_NE(static_cast<PrerenderContents*>(NULL), contents_); 863 DCHECK(contents_);
864 864
865 if (--handle_count_ == 0) { 865 if (--handle_count_ == 0) {
866 // This will eventually remove this object from active_prerenders_. 866 // This will eventually remove this object from active_prerenders_.
867 contents_->Destroy(FINAL_STATUS_CANCELLED); 867 contents_->Destroy(FINAL_STATUS_CANCELLED);
868 } 868 }
869 } 869 }
870 870
871 PrerenderContents* PrerenderManager::PrerenderData::ReleaseContents() { 871 PrerenderContents* PrerenderManager::PrerenderData::ReleaseContents() {
872 return contents_.release(); 872 return contents_.release();
873 } 873 }
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 } 1286 }
1287 1287
1288 void PrerenderManager::RenderProcessHostDestroyed( 1288 void PrerenderManager::RenderProcessHostDestroyed(
1289 content::RenderProcessHost* host) { 1289 content::RenderProcessHost* host) {
1290 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1290 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1291 size_t erased = prerender_process_hosts_.erase(host); 1291 size_t erased = prerender_process_hosts_.erase(host);
1292 DCHECK_EQ(1u, erased); 1292 DCHECK_EQ(1u, erased);
1293 } 1293 }
1294 1294
1295 } // namespace prerender 1295 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698