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

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: more standard code, simpler handle, no class explosion 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..1ba36b212ea90128eeedaec0b47037e6a51eadd2
--- /dev/null
+++ b/chrome/browser/prerender/prerender_handle.cc
@@ -0,0 +1,59 @@
+// 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 {
+
+PrerenderHandle::~PrerenderHandle() {
+ DCHECK(!contents_);
+}
+
+bool PrerenderHandle::Matches(
+ const GURL& url,
+ const content::SessionStorageNamespace* session_storage_namespace) const {
+ DCHECK(CalledOnValidThread());
+ DCHECK(!IsPending());
+ return contents_->Matches(url, session_storage_namespace);
+}
+
+bool PrerenderHandle::IsPending() const {
+ DCHECK(CalledOnValidThread());
+ return !contents_;
+}
+
+bool PrerenderHandle::DidFinishLoading() const {
+ DCHECK(CalledOnValidThread());
+ if (IsPending())
+ return false;
+ return contents_->has_finished_loading();
+}
+
+void PrerenderHandle::DecrementClientCount() {
+ contents_->DecrementClientCount();
dominich 2012/06/22 15:36:16 Where do we increment the client count?
+}
+
+PrerenderHandle::PrerenderHandle() : contents_(NULL) {
+}
+
+void PrerenderHandle::AddDuplicate(
+ scoped_ptr<PrerenderHandle> new_duplicate_handle) {
+ DCHECK(new_duplicate_handle->IsPending());
+ PrerenderHandle* old_duplicate_handle = duplicate_handle_.release();
+
+ new_duplicate_handle->contents_ = contents_;
+ new_duplicate_handle->duplicate_handle_.reset(old_duplicate_handle);
+ duplicate_handle_.swap(new_duplicate_handle);
+}
+
+void PrerenderHandle::SetContents(PrerenderContents* contents) {
+ contents_ = contents;
+ if (duplicate_handle_.get())
+ duplicate_handle_->SetContents(contents);
+}
+
+} // namespace prerender

Powered by Google App Engine
This is Rietveld 408576698