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

Unified Diff: chrome/browser/prerender/prerender_handle.cc

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediated, and cleaned up in prep for uploading for review Created 8 years, 6 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/prerender/prerender_handle.cc
diff --git a/chrome/browser/prerender/prerender_handle.cc b/chrome/browser/prerender/prerender_handle.cc
new file mode 100644
index 0000000000000000000000000000000000000000..64ca89d501b968bd5f6afb3d8b8885a7db858b28
--- /dev/null
+++ b/chrome/browser/prerender/prerender_handle.cc
@@ -0,0 +1,57 @@
+// Copyright (c) 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/prerender/prerender_handle.h"
+
+#include "base/basictypes.h"
+#include "chrome/browser/prerender/prerender_contents.h"
+
+namespace prerender {
+
+PrerenderHandleImpl::~PrerenderHandleImpl() {
+}
+
+bool PrerenderHandleImpl::IsPending() const {
+ DCHECK(CalledOnValidThread());
+ return !contents_;
+}
+
+bool PrerenderHandleImpl::DidFinishLoading() const {
+ DCHECK(CalledOnValidThread());
+ if (IsPending())
+ return false;
+ return contents_->has_finished_loading();
+}
+
+void PrerenderHandleImpl::Release() {
+ DVLOG(4) << "PrerenderHandleImpl::Release()";
+ contents_->DecrementClientCount();
+}
+
+PrerenderHandleImpl::PrerenderHandleImpl() : contents_(NULL) {
+}
+
+void PrerenderHandleImpl::AddDuplicate(
+ PrerenderHandleImpl* new_duplicate_handle) {
+ DCHECK(new_duplicate_handle->IsPending());
+ PrerenderHandleImpl* old_duplicate_handle = duplicate_handle_.release();
+
+ new_duplicate_handle->contents_ = contents_;
+ new_duplicate_handle->duplicate_handle_.reset(old_duplicate_handle);
+ duplicate_handle_.reset(new_duplicate_handle);
+
+ contents_->IncrementClientCount();
+}
+
+void PrerenderHandleImpl::AddClient() {
+ contents_->IncrementClientCount();
+}
+
+void PrerenderHandleImpl::SetContents(PrerenderContents* contents) {
+ contents_ = contents;
+ if (duplicate_handle_.get())
+ duplicate_handle_->SetContents(contents);
+}
+
+} // namespace prerender

Powered by Google App Engine
This is Rietveld 408576698