Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |