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

Side by Side Diff: chrome/browser/android/offline_pages/prerender_adapter.cc

Issue 2357013002: Fix an issue that PrerenderLoader::OnPrerenderStart() never gets called. (Closed)
Patch Set: remove OnPrerenderStarted Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/android/offline_pages/prerender_adapter.h" 5 #include "chrome/browser/android/offline_pages/prerender_adapter.h"
6 6
7 #include "chrome/browser/prerender/prerender_manager.h" 7 #include "chrome/browser/prerender/prerender_manager.h"
8 #include "chrome/browser/prerender/prerender_manager_factory.h" 8 #include "chrome/browser/prerender/prerender_manager_factory.h"
9 #include "content/public/browser/browser_context.h" 9 #include "content/public/browser/browser_context.h"
10 #include "content/public/browser/web_contents.h" 10 #include "content/public/browser/web_contents.h"
(...skipping 24 matching lines...) Expand all
35 content::SessionStorageNamespace* session_storage_namespace, 35 content::SessionStorageNamespace* session_storage_namespace,
36 const gfx::Size& size) { 36 const gfx::Size& size) {
37 DCHECK(!IsActive()); 37 DCHECK(!IsActive());
38 DCHECK(CanPrerender()); 38 DCHECK(CanPrerender());
39 39
40 prerender::PrerenderManager* manager = 40 prerender::PrerenderManager* manager =
41 prerender::PrerenderManagerFactory::GetForBrowserContext(browser_context); 41 prerender::PrerenderManagerFactory::GetForBrowserContext(browser_context);
42 DCHECK(manager); 42 DCHECK(manager);
43 43
44 // Start prerendering the url and capture the handle for the prerendering. 44 // Start prerendering the url and capture the handle for the prerendering.
45 // Note: PrerenderHandle::OnPrerenderStart() will get called inside
dougarnett 2016/09/21 17:01:27 maybe drop this comment with something similar by
qinmin 2016/09/21 17:18:01 Done.
46 // PrerenderManager::AddPrerenderForOffline(), this is before the observer is
47 // set.
45 active_handle_ = 48 active_handle_ =
46 manager->AddPrerenderForOffline(url, session_storage_namespace, size); 49 manager->AddPrerenderForOffline(url, session_storage_namespace, size);
47 if (!active_handle_) 50 if (!active_handle_)
48 return false; 51 return false;
52 DCHECK(active_handle_->contents());
53 DCHECK(active_handle_->contents()->prerendering_has_started());
49 54
50 active_handle_->SetObserver(this); 55 active_handle_->SetObserver(this);
56
51 return true; 57 return true;
52 } 58 }
53 59
54 content::WebContents* PrerenderAdapter::GetWebContents() const { 60 content::WebContents* PrerenderAdapter::GetWebContents() const {
55 DCHECK(IsActive()); 61 DCHECK(IsActive());
56 DCHECK(active_handle_->contents()); 62 DCHECK(active_handle_->contents());
57 // Note: the prerender stack maintains ownership of these contents 63 // Note: the prerender stack maintains ownership of these contents
58 // and PrerenderingLoader::StopLoading() must be called to report 64 // and PrerenderingLoader::StopLoading() must be called to report
59 // the Loader is done with the contents. 65 // the Loader is done with the contents.
60 return active_handle_->contents()->prerender_contents(); 66 return active_handle_->contents()->prerender_contents();
(...skipping 12 matching lines...) Expand all
73 void PrerenderAdapter::DestroyActive() { 79 void PrerenderAdapter::DestroyActive() {
74 DCHECK(IsActive()); 80 DCHECK(IsActive());
75 // Clear active handle and call OnCancel from local variable to avoid 81 // Clear active handle and call OnCancel from local variable to avoid
76 // immediate Observer OnPrerenderStop() call from thinking still active. 82 // immediate Observer OnPrerenderStop() call from thinking still active.
77 prerender::PrerenderHandle* handle_to_destroy = active_handle_.release(); 83 prerender::PrerenderHandle* handle_to_destroy = active_handle_.release();
78 handle_to_destroy->OnCancel(); 84 handle_to_destroy->OnCancel();
79 delete handle_to_destroy; 85 delete handle_to_destroy;
80 } 86 }
81 87
82 void PrerenderAdapter::OnPrerenderStart(prerender::PrerenderHandle* handle) { 88 void PrerenderAdapter::OnPrerenderStart(prerender::PrerenderHandle* handle) {
83 DCHECK_EQ(active_handle_.get(), handle); 89 NOTREACHED();
dougarnett 2016/09/21 17:01:27 maybe some comment here instead, eg, // Not expec
qinmin 2016/09/21 17:18:01 Done.
84 observer_->OnPrerenderStart();
85 } 90 }
86 91
87 void PrerenderAdapter::OnPrerenderStopLoading( 92 void PrerenderAdapter::OnPrerenderStopLoading(
88 prerender::PrerenderHandle* handle) { 93 prerender::PrerenderHandle* handle) {
89 DCHECK_EQ(active_handle_.get(), handle); 94 DCHECK_EQ(active_handle_.get(), handle);
90 observer_->OnPrerenderStopLoading(); 95 observer_->OnPrerenderStopLoading();
91 } 96 }
92 97
93 void PrerenderAdapter::OnPrerenderDomContentLoaded( 98 void PrerenderAdapter::OnPrerenderDomContentLoaded(
94 prerender::PrerenderHandle* handle) { 99 prerender::PrerenderHandle* handle) {
95 DCHECK_EQ(active_handle_.get(), handle); 100 DCHECK_EQ(active_handle_.get(), handle);
96 observer_->OnPrerenderDomContentLoaded(); 101 observer_->OnPrerenderDomContentLoaded();
97 } 102 }
98 103
99 void PrerenderAdapter::OnPrerenderStop(prerender::PrerenderHandle* handle) { 104 void PrerenderAdapter::OnPrerenderStop(prerender::PrerenderHandle* handle) {
100 if (IsActive()) { 105 if (IsActive()) {
101 DCHECK_EQ(active_handle_.get(), handle); 106 DCHECK_EQ(active_handle_.get(), handle);
102 observer_->OnPrerenderStop(); 107 observer_->OnPrerenderStop();
103 } 108 }
104 } 109 }
105 110
106 } // namespace offline_pages 111 } // namespace offline_pages
OLDNEW
« no previous file with comments | « chrome/browser/android/offline_pages/prerender_adapter.h ('k') | chrome/browser/android/offline_pages/prerendering_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698