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

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

Issue 2357013002: Fix an issue that PrerenderLoader::OnPrerenderStart() never gets called. (Closed)
Patch Set: nits 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 "base/sys_info.h" 7 #include "base/sys_info.h"
8 #include "chrome/browser/prerender/prerender_manager_factory.h" 8 #include "chrome/browser/prerender/prerender_manager_factory.h"
9 #include "chrome/test/base/testing_profile.h" 9 #include "chrome/test/base/testing_profile.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 } // namespace 103 } // namespace
104 104
105 // Test class. 105 // Test class.
106 class PrerenderAdapterTest : public testing::Test, 106 class PrerenderAdapterTest : public testing::Test,
107 public PrerenderAdapter::Observer { 107 public PrerenderAdapter::Observer {
108 public: 108 public:
109 PrerenderAdapterTest(); 109 PrerenderAdapterTest();
110 ~PrerenderAdapterTest() override; 110 ~PrerenderAdapterTest() override;
111 111
112 // PrerenderAdapter::Observer implementation: 112 // PrerenderAdapter::Observer implementation:
113 void OnPrerenderStart() override;
114 void OnPrerenderStopLoading() override; 113 void OnPrerenderStopLoading() override;
115 void OnPrerenderDomContentLoaded() override; 114 void OnPrerenderDomContentLoaded() override;
116 void OnPrerenderStop() override; 115 void OnPrerenderStop() override;
117 116
118 void SetUp() override; 117 void SetUp() override;
119 118
120 // Returns the PrerenderLoader to test. 119 // Returns the PrerenderLoader to test.
121 PrerenderAdapter* adapter() const { return adapter_.get(); } 120 PrerenderAdapter* adapter() const { return adapter_.get(); }
122 StubPrerenderContentsFactory* prerender_contents_factory() { 121 StubPrerenderContentsFactory* prerender_contents_factory() {
123 return prerender_contents_factory_; 122 return prerender_contents_factory_;
124 } 123 }
125 Profile* profile() { return &profile_; } 124 Profile* profile() { return &profile_; }
126 PrerenderManager* prerender_manager() { return prerender_manager_; } 125 PrerenderManager* prerender_manager() { return prerender_manager_; }
127 bool observer_start_called() const { return observer_start_called_; }
128 bool observer_stop_loading_called() const { 126 bool observer_stop_loading_called() const {
129 return observer_stop_loading_called_; 127 return observer_stop_loading_called_;
130 } 128 }
131 bool observer_dom_content_loaded_called() const { 129 bool observer_dom_content_loaded_called() const {
132 return observer_dom_content_loaded_called_; 130 return observer_dom_content_loaded_called_;
133 } 131 }
134 bool observer_stop_called() const { return observer_stop_called_; } 132 bool observer_stop_called() const { return observer_stop_called_; }
135 133
136 private: 134 private:
137 content::TestBrowserThreadBundle thread_bundle_; 135 content::TestBrowserThreadBundle thread_bundle_;
138 TestingProfile profile_; 136 TestingProfile profile_;
139 std::unique_ptr<PrerenderAdapter> adapter_; 137 std::unique_ptr<PrerenderAdapter> adapter_;
140 StubPrerenderContentsFactory* prerender_contents_factory_; 138 StubPrerenderContentsFactory* prerender_contents_factory_;
141 PrerenderManager* prerender_manager_; 139 PrerenderManager* prerender_manager_;
142 bool observer_start_called_;
143 bool observer_stop_loading_called_; 140 bool observer_stop_loading_called_;
144 bool observer_dom_content_loaded_called_; 141 bool observer_dom_content_loaded_called_;
145 bool observer_stop_called_; 142 bool observer_stop_called_;
146 143
147 DISALLOW_COPY_AND_ASSIGN(PrerenderAdapterTest); 144 DISALLOW_COPY_AND_ASSIGN(PrerenderAdapterTest);
148 }; 145 };
149 146
150 PrerenderAdapterTest::PrerenderAdapterTest() 147 PrerenderAdapterTest::PrerenderAdapterTest()
151 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 148 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
152 prerender_manager_(nullptr), 149 prerender_manager_(nullptr),
153 observer_start_called_(false),
154 observer_stop_loading_called_(false), 150 observer_stop_loading_called_(false),
155 observer_dom_content_loaded_called_(false), 151 observer_dom_content_loaded_called_(false),
156 observer_stop_called_(false) {} 152 observer_stop_called_(false) {}
157 153
158 void PrerenderAdapterTest::OnPrerenderStart() {
159 observer_start_called_ = true;
160 }
161
162 PrerenderAdapterTest::~PrerenderAdapterTest() { 154 PrerenderAdapterTest::~PrerenderAdapterTest() {
163 if (prerender_manager_) 155 if (prerender_manager_)
164 prerender_manager_->Shutdown(); 156 prerender_manager_->Shutdown();
165 } 157 }
166 158
167 void PrerenderAdapterTest::OnPrerenderStopLoading() { 159 void PrerenderAdapterTest::OnPrerenderStopLoading() {
168 observer_stop_loading_called_ = true; 160 observer_stop_loading_called_ = true;
169 } 161 }
170 162
171 void PrerenderAdapterTest::OnPrerenderDomContentLoaded() { 163 void PrerenderAdapterTest::OnPrerenderDomContentLoaded() {
172 observer_dom_content_loaded_called_ = true; 164 observer_dom_content_loaded_called_ = true;
173 } 165 }
174 166
175 void PrerenderAdapterTest::OnPrerenderStop() { 167 void PrerenderAdapterTest::OnPrerenderStop() {
176 observer_stop_called_ = true; 168 observer_stop_called_ = true;
177 } 169 }
178 170
179 void PrerenderAdapterTest::SetUp() { 171 void PrerenderAdapterTest::SetUp() {
180 if (base::SysInfo::IsLowEndDevice()) 172 if (base::SysInfo::IsLowEndDevice())
181 return; 173 return;
182 adapter_.reset(new PrerenderAdapter(this)); 174 adapter_.reset(new PrerenderAdapter(this));
183 prerender_contents_factory_ = new StubPrerenderContentsFactory(); 175 prerender_contents_factory_ = new StubPrerenderContentsFactory();
184 prerender_manager_ = PrerenderManagerFactory::GetForBrowserContext(profile()); 176 prerender_manager_ = PrerenderManagerFactory::GetForBrowserContext(profile());
185 if (prerender_manager_) { 177 if (prerender_manager_) {
186 prerender_manager_->SetPrerenderContentsFactoryForTest( 178 prerender_manager_->SetPrerenderContentsFactoryForTest(
187 prerender_contents_factory_); 179 prerender_contents_factory_);
188 prerender_manager_->SetMode(PrerenderManager::PRERENDER_MODE_ENABLED); 180 prerender_manager_->SetMode(PrerenderManager::PRERENDER_MODE_ENABLED);
189 } 181 }
190 observer_start_called_ = false;
191 observer_stop_loading_called_ = false; 182 observer_stop_loading_called_ = false;
192 observer_dom_content_loaded_called_ = false; 183 observer_dom_content_loaded_called_ = false;
193 observer_stop_called_ = false; 184 observer_stop_called_ = false;
194 ASSERT_TRUE(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 185 ASSERT_TRUE(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
195 } 186 }
196 187
197 TEST_F(PrerenderAdapterTest, CanPrerender) { 188 TEST_F(PrerenderAdapterTest, CanPrerender) {
198 // Skip test on low end device until supported. 189 // Skip test on low end device until supported.
199 if (base::SysInfo::IsLowEndDevice()) 190 if (base::SysInfo::IsLowEndDevice())
200 return; 191 return;
(...skipping 30 matching lines...) Expand all
231 content::WebContents::CreateParams(profile())); 222 content::WebContents::CreateParams(profile()));
232 content::SessionStorageNamespace* sessionStorageNamespace = 223 content::SessionStorageNamespace* sessionStorageNamespace =
233 session_contents->GetController().GetDefaultSessionStorageNamespace(); 224 session_contents->GetController().GetDefaultSessionStorageNamespace();
234 gfx::Size renderWindowSize = session_contents->GetContainerBounds().size(); 225 gfx::Size renderWindowSize = session_contents->GetContainerBounds().size();
235 GURL url("https://url.test"); 226 GURL url("https://url.test");
236 EXPECT_TRUE(adapter()->StartPrerender(profile(), url, sessionStorageNamespace, 227 EXPECT_TRUE(adapter()->StartPrerender(profile(), url, sessionStorageNamespace,
237 renderWindowSize)); 228 renderWindowSize));
238 EXPECT_TRUE(prerender_contents_factory()->create_prerender_contents_called()); 229 EXPECT_TRUE(prerender_contents_factory()->create_prerender_contents_called());
239 EXPECT_NE(nullptr, prerender_contents_factory()->last_prerender_contents()); 230 EXPECT_NE(nullptr, prerender_contents_factory()->last_prerender_contents());
240 EXPECT_TRUE(adapter()->IsActive()); 231 EXPECT_TRUE(adapter()->IsActive());
241 EXPECT_FALSE(observer_start_called());
242 EXPECT_FALSE(observer_stop_loading_called()); 232 EXPECT_FALSE(observer_stop_loading_called());
243 EXPECT_FALSE(observer_dom_content_loaded_called()); 233 EXPECT_FALSE(observer_dom_content_loaded_called());
244 EXPECT_FALSE(observer_stop_called()); 234 EXPECT_FALSE(observer_stop_called());
245 235
246 // Exercise observer event call paths. 236 // Exercise observer event call paths.
247 prerender_contents_factory()->last_prerender_contents()->ReportStartEvent();
248 // PumpLoop();
249 EXPECT_TRUE(observer_start_called());
250 prerender_contents_factory() 237 prerender_contents_factory()
251 ->last_prerender_contents() 238 ->last_prerender_contents()
252 ->ReportDomContentEvent(); 239 ->ReportDomContentEvent();
253 EXPECT_TRUE(observer_dom_content_loaded_called()); 240 EXPECT_TRUE(observer_dom_content_loaded_called());
254 prerender_contents_factory()->last_prerender_contents()->ReportOnLoadEvent(); 241 prerender_contents_factory()->last_prerender_contents()->ReportOnLoadEvent();
255 EXPECT_TRUE(observer_stop_loading_called()); 242 EXPECT_TRUE(observer_stop_loading_called());
256 prerender_contents_factory()->last_prerender_contents()->StopWithStatus( 243 prerender_contents_factory()->last_prerender_contents()->StopWithStatus(
257 FinalStatus::FINAL_STATUS_CANCELLED); 244 FinalStatus::FINAL_STATUS_CANCELLED);
258 EXPECT_TRUE(observer_stop_called()); 245 EXPECT_TRUE(observer_stop_called());
259 EXPECT_EQ(FinalStatus::FINAL_STATUS_CANCELLED, adapter()->GetFinalStatus()); 246 EXPECT_EQ(FinalStatus::FINAL_STATUS_CANCELLED, adapter()->GetFinalStatus());
260 247
261 // Exercise access methods even though no interesting values set beneath. 248 // Exercise access methods even though no interesting values set beneath.
262 EXPECT_EQ(nullptr, adapter()->GetWebContents()); 249 EXPECT_EQ(nullptr, adapter()->GetWebContents());
263 250
264 adapter()->DestroyActive(); 251 adapter()->DestroyActive();
265 EXPECT_FALSE(adapter()->IsActive()); 252 EXPECT_FALSE(adapter()->IsActive());
266 } 253 }
267 254
268 } // namespace offline_pages 255 } // namespace offline_pages
OLDNEW
« no previous file with comments | « chrome/browser/android/offline_pages/prerender_adapter.cc ('k') | chrome/browser/android/offline_pages/prerendering_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698