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

Side by Side Diff: Source/web/tests/WebFrameTest.cpp

Issue 23506013: Make the embedder responsible for creating the WebFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add WebViewHelper for unittests. Created 7 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 private: 131 private:
132 OwnPtr<WebLayerTreeView> m_layerTreeView; 132 OwnPtr<WebLayerTreeView> m_layerTreeView;
133 }; 133 };
134 134
135 class WebFrameTest : public testing::Test { 135 class WebFrameTest : public testing::Test {
136 public: 136 public:
137 WebFrameTest() 137 WebFrameTest()
138 : m_baseURL("http://www.test.com/") 138 : m_baseURL("http://www.test.com/")
139 , m_chromeURL("chrome://") 139 , m_chromeURL("chrome://")
140 , m_webView(0) 140 , m_webView(0)
141 , m_mainFrame(0)
141 { 142 {
142 } 143 }
143 144
144 virtual ~WebFrameTest() 145 virtual ~WebFrameTest()
145 { 146 {
147 Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
148
146 if (m_webView) 149 if (m_webView)
147 m_webView->close(); 150 m_webView->close();
148 } 151 if (m_mainFrame)
149 152 m_mainFrame->close();
150 virtual void TearDown()
151 {
152 Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
153 } 153 }
154 154
155 void registerMockedHttpURLLoad(const std::string& fileName) 155 void registerMockedHttpURLLoad(const std::string& fileName)
156 { 156 {
157 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseU RL.c_str()), WebString::fromUTF8(fileName.c_str())); 157 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseU RL.c_str()), WebString::fromUTF8(fileName.c_str()));
158 } 158 }
159 159
160 void registerMockedChromeURLLoad(const std::string& fileName) 160 void registerMockedChromeURLLoad(const std::string& fileName)
161 { 161 {
162 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_chrom eURL.c_str()), WebString::fromUTF8(fileName.c_str())); 162 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_chrom eURL.c_str()), WebString::fromUTF8(fileName.c_str()));
163 } 163 }
164 164
165 void createCompositingWebView() 165 void createCompositingWebView()
166 { 166 {
167 m_fakeCompositingWebViewClient = adoptPtr(new FakeCompositingWebViewClie nt()); 167 m_fakeCompositingWebViewClient = adoptPtr(new FakeCompositingWebViewClie nt());
168 m_mainFrame = WebFrame::create(&m_fakeCompositingWebViewClient->m_fakeWe bFrameClient);
168 m_webView = WebView::create(m_fakeCompositingWebViewClient.get()); 169 m_webView = WebView::create(m_fakeCompositingWebViewClient.get());
169 m_webView->settings()->setJavaScriptEnabled(true); 170 m_webView->settings()->setJavaScriptEnabled(true);
170 m_webView->settings()->setForceCompositingMode(true); 171 m_webView->settings()->setForceCompositingMode(true);
171 m_webView->settings()->setAcceleratedCompositingEnabled(true); 172 m_webView->settings()->setAcceleratedCompositingEnabled(true);
172 m_webView->settings()->setAcceleratedCompositingForFixedPositionEnabled( true); 173 m_webView->settings()->setAcceleratedCompositingForFixedPositionEnabled( true);
173 m_webView->settings()->setAcceleratedCompositingForOverflowScrollEnabled (true); 174 m_webView->settings()->setAcceleratedCompositingForOverflowScrollEnabled (true);
174 m_webView->settings()->setAcceleratedCompositingForScrollableFramesEnabl ed(true); 175 m_webView->settings()->setAcceleratedCompositingForScrollableFramesEnabl ed(true);
175 m_webView->settings()->setCompositedScrollingForFramesEnabled(true); 176 m_webView->settings()->setCompositedScrollingForFramesEnabled(true);
176 m_webView->settings()->setFixedPositionCreatesStackingContext(true); 177 m_webView->settings()->setFixedPositionCreatesStackingContext(true);
177 m_webView->initializeMainFrame(&m_fakeCompositingWebViewClient->m_fakeWe bFrameClient); 178 m_webView->initializeMainFrame(m_mainFrame);
179 }
180
181 // Wrapper around FrameTestHelpers::createWebViewAndLoad() that allows the t est fixture to handle the main frame's lifetime.
182 void initializeWebViewAndLoad(const std::string& url, bool enableJavascript = false, WebFrameClient* webFrameClient = 0, WebViewClient* webViewClient = 0)
183 {
184 ASSERT(!m_webView);
185 ASSERT(!m_mainFrame);
186 m_mainFrame = WebFrame::create(webFrameClient);
187 initializeWebViewAndLoad(m_mainFrame, url, enableJavascript, webViewClie nt);
188 }
189
190 void initializeWebView(bool enableJavascript, WebFrameClient* webFrameClient , WebViewClient* webViewClient = 0)
191 {
192 ASSERT(!m_webView);
193 ASSERT(!m_mainFrame);
194 m_mainFrame = WebFrame::create(webFrameClient);
195 initializeWebView(m_mainFrame, enableJavascript, webViewClient);
178 } 196 }
179 197
180 protected: 198 protected:
181 WebViewImpl* webViewImpl() const { return toWebViewImpl(m_webView); } 199 WebViewImpl* webViewImpl() const { return toWebViewImpl(m_webView); }
182 200
183 std::string m_baseURL; 201 std::string m_baseURL;
184 std::string m_chromeURL; 202 std::string m_chromeURL;
185 OwnPtr<FakeCompositingWebViewClient> m_fakeCompositingWebViewClient; 203 OwnPtr<FakeCompositingWebViewClient> m_fakeCompositingWebViewClient;
186 204
187 WebView* m_webView; 205 WebView* m_webView;
206 WebFrame* m_mainFrame;
188 }; 207 };
189 208
190 TEST_F(WebFrameTest, ContentText) 209 TEST_F(WebFrameTest, ContentText)
191 { 210 {
192 registerMockedHttpURLLoad("iframes_test.html"); 211 registerMockedHttpURLLoad("iframes_test.html");
193 registerMockedHttpURLLoad("visible_iframe.html"); 212 registerMockedHttpURLLoad("visible_iframe.html");
194 registerMockedHttpURLLoad("invisible_iframe.html"); 213 registerMockedHttpURLLoad("invisible_iframe.html");
195 registerMockedHttpURLLoad("zero_sized_iframe.html"); 214 registerMockedHttpURLLoad("zero_sized_iframe.html");
196 215
197 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "iframes_test .html"); 216 initializeWebViewAndLoad(m_baseURL + "iframes_test.html");
198 217
199 // Now retrieve the frames text and test it only includes visible elements. 218 // Now retrieve the frames text and test it only includes visible elements.
200 std::string content = std::string(m_webView->mainFrame()->contentAsText(1024 ).utf8().data()); 219 std::string content = std::string(m_webView->mainFrame()->contentAsText(1024 ).utf8().data());
201 EXPECT_NE(std::string::npos, content.find(" visible paragraph")); 220 EXPECT_NE(std::string::npos, content.find(" visible paragraph"));
202 EXPECT_NE(std::string::npos, content.find(" visible iframe")); 221 EXPECT_NE(std::string::npos, content.find(" visible iframe"));
203 EXPECT_EQ(std::string::npos, content.find(" invisible pararaph")); 222 EXPECT_EQ(std::string::npos, content.find(" invisible pararaph"));
204 EXPECT_EQ(std::string::npos, content.find(" invisible iframe")); 223 EXPECT_EQ(std::string::npos, content.find(" invisible iframe"));
205 EXPECT_EQ(std::string::npos, content.find("iframe with zero size")); 224 EXPECT_EQ(std::string::npos, content.find("iframe with zero size"));
206 } 225 }
207 226
208 TEST_F(WebFrameTest, FrameForEnteredContext) 227 TEST_F(WebFrameTest, FrameForEnteredContext)
209 { 228 {
210 registerMockedHttpURLLoad("iframes_test.html"); 229 registerMockedHttpURLLoad("iframes_test.html");
211 registerMockedHttpURLLoad("visible_iframe.html"); 230 registerMockedHttpURLLoad("visible_iframe.html");
212 registerMockedHttpURLLoad("invisible_iframe.html"); 231 registerMockedHttpURLLoad("invisible_iframe.html");
213 registerMockedHttpURLLoad("zero_sized_iframe.html"); 232 registerMockedHttpURLLoad("zero_sized_iframe.html");
214 233
215 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "iframes_test .html", true); 234 initializeWebViewAndLoad(m_baseURL + "iframes_test.html", true);
216 235
217 v8::HandleScope scope(v8::Isolate::GetCurrent()); 236 v8::HandleScope scope(v8::Isolate::GetCurrent());
218 EXPECT_EQ(m_webView->mainFrame(), 237 EXPECT_EQ(m_webView->mainFrame(),
219 WebFrame::frameForContext( 238 WebFrame::frameForContext(
220 m_webView->mainFrame()->mainWorldScriptContext())); 239 m_webView->mainFrame()->mainWorldScriptContext()));
221 EXPECT_EQ(m_webView->mainFrame()->firstChild(), 240 EXPECT_EQ(m_webView->mainFrame()->firstChild(),
222 WebFrame::frameForContext( 241 WebFrame::frameForContext(
223 m_webView->mainFrame()->firstChild()->mainWorldScriptContext() )); 242 m_webView->mainFrame()->firstChild()->mainWorldScriptContext() ));
224 } 243 }
225 244
226 TEST_F(WebFrameTest, FormWithNullFrame) 245 TEST_F(WebFrameTest, FormWithNullFrame)
227 { 246 {
228 registerMockedHttpURLLoad("form.html"); 247 registerMockedHttpURLLoad("form.html");
229 248
230 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "form.html"); 249 initializeWebViewAndLoad(m_baseURL + "form.html");
231 250
232 WebVector<WebFormElement> forms; 251 WebVector<WebFormElement> forms;
233 m_webView->mainFrame()->document().forms(forms); 252 m_webView->mainFrame()->document().forms(forms);
234 m_webView->close(); 253 m_webView->close();
235 m_webView = 0; 254 m_webView = 0;
236 255
237 EXPECT_EQ(forms.size(), 1U); 256 EXPECT_EQ(forms.size(), 1U);
238 257
239 // This test passes if this doesn't crash. 258 // This test passes if this doesn't crash.
240 WebSearchableFormData searchableDataForm(forms[0]); 259 WebSearchableFormData searchableDataForm(forms[0]);
241 } 260 }
242 261
243 TEST_F(WebFrameTest, ChromePageJavascript) 262 TEST_F(WebFrameTest, ChromePageJavascript)
244 { 263 {
245 registerMockedChromeURLLoad("history.html"); 264 registerMockedChromeURLLoad("history.html");
246 265
247 // Pass true to enable JavaScript. 266 // Pass true to enable JavaScript.
248 m_webView = FrameTestHelpers::createWebViewAndLoad(m_chromeURL + "history.ht ml", true); 267 initializeWebViewAndLoad(m_chromeURL + "history.html", true);
249 268
250 // Try to run JS against the chrome-style URL. 269 // Try to run JS against the chrome-style URL.
251 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "javascript:document.bod y.appendChild(document.createTextNode('Clobbered'))"); 270 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "javascript:document.bod y.appendChild(document.createTextNode('Clobbered'))");
252 271
253 // Required to see any updates in contentAsText. 272 // Required to see any updates in contentAsText.
254 m_webView->layout(); 273 m_webView->layout();
255 274
256 // Now retrieve the frame's text and ensure it was modified by running javas cript. 275 // Now retrieve the frame's text and ensure it was modified by running javas cript.
257 std::string content = std::string(m_webView->mainFrame()->contentAsText(1024 ).utf8().data()); 276 std::string content = std::string(m_webView->mainFrame()->contentAsText(1024 ).utf8().data());
258 EXPECT_NE(std::string::npos, content.find("Clobbered")); 277 EXPECT_NE(std::string::npos, content.find("Clobbered"));
259 } 278 }
260 279
261 TEST_F(WebFrameTest, ChromePageNoJavascript) 280 TEST_F(WebFrameTest, ChromePageNoJavascript)
262 { 281 {
263 registerMockedChromeURLLoad("history.html"); 282 registerMockedChromeURLLoad("history.html");
264 283
265 /// Pass true to enable JavaScript. 284 /// Pass true to enable JavaScript.
266 m_webView = FrameTestHelpers::createWebViewAndLoad(m_chromeURL + "history.ht ml", true); 285 initializeWebViewAndLoad(m_chromeURL + "history.html", true);
267 286
268 // Try to run JS against the chrome-style URL after prohibiting it. 287 // Try to run JS against the chrome-style URL after prohibiting it.
269 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs("chrome"); 288 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs("chrome");
270 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "javascript:document.bod y.appendChild(document.createTextNode('Clobbered'))"); 289 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "javascript:document.bod y.appendChild(document.createTextNode('Clobbered'))");
271 290
272 // Required to see any updates in contentAsText. 291 // Required to see any updates in contentAsText.
273 m_webView->layout(); 292 m_webView->layout();
274 293
275 // Now retrieve the frame's text and ensure it wasn't modified by running ja vascript. 294 // Now retrieve the frame's text and ensure it wasn't modified by running ja vascript.
276 std::string content = std::string(m_webView->mainFrame()->contentAsText(1024 ).utf8().data()); 295 std::string content = std::string(m_webView->mainFrame()->contentAsText(1024 ).utf8().data());
277 EXPECT_EQ(std::string::npos, content.find("Clobbered")); 296 EXPECT_EQ(std::string::npos, content.find("Clobbered"));
278 } 297 }
279 298
280 TEST_F(WebFrameTest, DispatchMessageEventWithOriginCheck) 299 TEST_F(WebFrameTest, DispatchMessageEventWithOriginCheck)
281 { 300 {
282 registerMockedHttpURLLoad("postmessage_test.html"); 301 registerMockedHttpURLLoad("postmessage_test.html");
283 302
284 // Pass true to enable JavaScript. 303 // Pass true to enable JavaScript.
285 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "postmessage_ test.html", true); 304 initializeWebViewAndLoad(m_baseURL + "postmessage_test.html", true);
286 305
287 // Send a message with the correct origin. 306 // Send a message with the correct origin.
288 WebSecurityOrigin correctOrigin(WebSecurityOrigin::create(toKURL(m_baseURL)) ); 307 WebSecurityOrigin correctOrigin(WebSecurityOrigin::create(toKURL(m_baseURL)) );
289 WebDOMEvent event = m_webView->mainFrame()->document().createEvent("MessageE vent"); 308 WebDOMEvent event = m_webView->mainFrame()->document().createEvent("MessageE vent");
290 WebDOMMessageEvent message = event.to<WebDOMMessageEvent>(); 309 WebDOMMessageEvent message = event.to<WebDOMMessageEvent>();
291 WebSerializedScriptValue data(WebSerializedScriptValue::fromString("foo")); 310 WebSerializedScriptValue data(WebSerializedScriptValue::fromString("foo"));
292 message.initMessageEvent("message", false, false, data, "http://origin.com", 0, ""); 311 message.initMessageEvent("message", false, false, data, "http://origin.com", 0, "");
293 m_webView->mainFrame()->dispatchMessageEventWithOriginCheck(correctOrigin, m essage); 312 m_webView->mainFrame()->dispatchMessageEventWithOriginCheck(correctOrigin, m essage);
294 313
295 // Send another message with incorrect origin. 314 // Send another message with incorrect origin.
(...skipping 19 matching lines...) Expand all
315 TEST_F(WebFrameTest, FrameViewNeedsLayoutOnFixedLayoutResize) 334 TEST_F(WebFrameTest, FrameViewNeedsLayoutOnFixedLayoutResize)
316 { 335 {
317 registerMockedHttpURLLoad("fixed_layout.html"); 336 registerMockedHttpURLLoad("fixed_layout.html");
318 337
319 FixedLayoutTestWebViewClient client; 338 FixedLayoutTestWebViewClient client;
320 int viewportWidth = 640; 339 int viewportWidth = 640;
321 int viewportHeight = 480; 340 int viewportHeight = 480;
322 341
323 // Make sure we initialize to minimum scale, even if the window size 342 // Make sure we initialize to minimum scale, even if the window size
324 // only becomes available after the load begins. 343 // only becomes available after the load begins.
325 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 344 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
326 m_webView->enableFixedLayoutMode(true); 345 m_webView->enableFixedLayoutMode(true);
327 m_webView->settings()->setViewportEnabled(true); 346 m_webView->settings()->setViewportEnabled(true);
328 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 347 m_webView->resize(WebSize(viewportWidth, viewportHeight));
329 m_webView->layout(); 348 m_webView->layout();
330 349
331 webViewImpl()->mainFrameImpl()->frameView()->setFixedLayoutSize(WebCore::Int Size(100, 100)); 350 webViewImpl()->mainFrameImpl()->frameView()->setFixedLayoutSize(WebCore::Int Size(100, 100));
332 EXPECT_TRUE(webViewImpl()->mainFrameImpl()->frameView()->needsLayout()); 351 EXPECT_TRUE(webViewImpl()->mainFrameImpl()->frameView()->needsLayout());
333 352
334 int prevLayoutCount = webViewImpl()->mainFrameImpl()->frameView()->layoutCou nt(); 353 int prevLayoutCount = webViewImpl()->mainFrameImpl()->frameView()->layoutCou nt();
335 webViewImpl()->mainFrameImpl()->frameView()->setFrameRect(WebCore::IntRect(0 , 0, 641, 481)); 354 webViewImpl()->mainFrameImpl()->frameView()->setFrameRect(WebCore::IntRect(0 , 0, 641, 481));
336 EXPECT_EQ(prevLayoutCount, webViewImpl()->mainFrameImpl()->frameView()->layo utCount()); 355 EXPECT_EQ(prevLayoutCount, webViewImpl()->mainFrameImpl()->frameView()->layo utCount());
337 356
338 webViewImpl()->layout(); 357 webViewImpl()->layout();
339 } 358 }
340 359
341 TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate) 360 TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate)
342 { 361 {
343 registerMockedHttpURLLoad("fixed_layout.html"); 362 registerMockedHttpURLLoad("fixed_layout.html");
344 363
345 FixedLayoutTestWebViewClient client; 364 FixedLayoutTestWebViewClient client;
346 int viewportWidth = 640; 365 int viewportWidth = 640;
347 int viewportHeight = 480; 366 int viewportHeight = 480;
348 367
349 // Make sure we initialize to minimum scale, even if the window size 368 // Make sure we initialize to minimum scale, even if the window size
350 // only becomes available after the load begins. 369 // only becomes available after the load begins.
351 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 370 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
352 m_webView->enableFixedLayoutMode(true); 371 m_webView->enableFixedLayoutMode(true);
353 m_webView->settings()->setViewportEnabled(true); 372 m_webView->settings()->setViewportEnabled(true);
354 373
355 WebCore::Document* document = webViewImpl()->page()->mainFrame()->document() ; 374 WebCore::Document* document = webViewImpl()->page()->mainFrame()->document() ;
356 document->settings()->setTextAutosizingEnabled(true); 375 document->settings()->setTextAutosizingEnabled(true);
357 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 376 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
358 webViewImpl()->resize(WebSize(viewportWidth, viewportHeight)); 377 webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
359 webViewImpl()->layout(); 378 webViewImpl()->layout();
360 379
361 WebCore::RenderObject* renderer = document->renderer(); 380 WebCore::RenderObject* renderer = document->renderer();
(...skipping 29 matching lines...) Expand all
391 TEST_F(WebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag) 410 TEST_F(WebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag)
392 { 411 {
393 registerMockedHttpURLLoad("no_viewport_tag.html"); 412 registerMockedHttpURLLoad("no_viewport_tag.html");
394 413
395 int viewportWidth = 640; 414 int viewportWidth = 640;
396 int viewportHeight = 480; 415 int viewportHeight = 480;
397 416
398 FixedLayoutTestWebViewClient client; 417 FixedLayoutTestWebViewClient client;
399 client.m_screenInfo.deviceScaleFactor = 2; 418 client.m_screenInfo.deviceScaleFactor = 2;
400 419
401 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_viewport_ tag.html", true, 0, &client); 420 initializeWebViewAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &clien t);
402 421
403 m_webView->settings()->setViewportEnabled(true); 422 m_webView->settings()->setViewportEnabled(true);
404 m_webView->enableFixedLayoutMode(true); 423 m_webView->enableFixedLayoutMode(true);
405 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 424 m_webView->resize(WebSize(viewportWidth, viewportHeight));
406 m_webView->layout(); 425 m_webView->layout();
407 426
408 EXPECT_EQ(2, m_webView->deviceScaleFactor()); 427 EXPECT_EQ(2, m_webView->deviceScaleFactor());
409 428
410 // Device scale factor should be independent of page scale. 429 // Device scale factor should be independent of page scale.
411 m_webView->setPageScaleFactorLimits(1, 2); 430 m_webView->setPageScaleFactorLimits(1, 2);
(...skipping 12 matching lines...) Expand all
424 443
425 registerMockedHttpURLLoad("fixed_layout.html"); 444 registerMockedHttpURLLoad("fixed_layout.html");
426 445
427 FixedLayoutTestWebViewClient client; 446 FixedLayoutTestWebViewClient client;
428 client.m_screenInfo.deviceScaleFactor = 1; 447 client.m_screenInfo.deviceScaleFactor = 1;
429 int viewportWidth = 640; 448 int viewportWidth = 640;
430 int viewportHeight = 480; 449 int viewportHeight = 480;
431 450
432 // Make sure we initialize to minimum scale, even if the window size 451 // Make sure we initialize to minimum scale, even if the window size
433 // only becomes available after the load begins. 452 // only becomes available after the load begins.
434 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 453 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
435 m_webView->enableFixedLayoutMode(true); 454 m_webView->enableFixedLayoutMode(true);
436 m_webView->settings()->setViewportEnabled(true); 455 m_webView->settings()->setViewportEnabled(true);
437 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 456 m_webView->resize(WebSize(viewportWidth, viewportHeight));
438 457
439 int defaultFixedLayoutWidth = 980; 458 int defaultFixedLayoutWidth = 980;
440 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th; 459 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th;
441 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); 460 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor());
442 EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor()); 461 EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor());
443 462
444 // Assume the user has pinch zoomed to page scale factor 2. 463 // Assume the user has pinch zoomed to page scale factor 2.
(...skipping 19 matching lines...) Expand all
464 483
465 registerMockedHttpURLLoad("wide_document.html"); 484 registerMockedHttpURLLoad("wide_document.html");
466 485
467 FixedLayoutTestWebViewClient client; 486 FixedLayoutTestWebViewClient client;
468 client.m_screenInfo.deviceScaleFactor = 1; 487 client.m_screenInfo.deviceScaleFactor = 1;
469 int viewportWidth = 640; 488 int viewportWidth = 640;
470 int viewportHeight = 480; 489 int viewportHeight = 480;
471 490
472 // Make sure we initialize to minimum scale, even if the window size 491 // Make sure we initialize to minimum scale, even if the window size
473 // only becomes available after the load begins. 492 // only becomes available after the load begins.
474 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "wide_documen t.html", true, 0, &client); 493 initializeWebViewAndLoad(m_baseURL + "wide_document.html", true, 0, &client) ;
475 m_webView->enableFixedLayoutMode(true); 494 m_webView->enableFixedLayoutMode(true);
476 m_webView->settings()->setViewportEnabled(true); 495 m_webView->settings()->setViewportEnabled(true);
477 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 496 m_webView->resize(WebSize(viewportWidth, viewportHeight));
478 497
479 int wideDocumentWidth = 1500; 498 int wideDocumentWidth = 1500;
480 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; 499 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth;
481 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); 500 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor());
482 EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor()); 501 EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor());
483 502
484 // Assume the user has pinch zoomed to page scale factor 2. 503 // Assume the user has pinch zoomed to page scale factor 2.
(...skipping 14 matching lines...) Expand all
499 518
500 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse) 519 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse)
501 { 520 {
502 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 521 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
503 522
504 FixedLayoutTestWebViewClient client; 523 FixedLayoutTestWebViewClient client;
505 client.m_screenInfo.deviceScaleFactor = 1; 524 client.m_screenInfo.deviceScaleFactor = 1;
506 int viewportWidth = 640; 525 int viewportWidth = 640;
507 int viewportHeight = 480; 526 int viewportHeight = 480;
508 527
509 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut o-initial-scale.html", true, 0, &client); 528 initializeWebViewAndLoad(m_baseURL + "viewport-auto-initial-scale.html", tru e, 0, &client);
510 m_webView->enableFixedLayoutMode(true); 529 m_webView->enableFixedLayoutMode(true);
511 m_webView->settings()->setViewportEnabled(true); 530 m_webView->settings()->setViewportEnabled(true);
512 m_webView->settings()->setLoadWithOverviewMode(false); 531 m_webView->settings()->setLoadWithOverviewMode(false);
513 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 532 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
514 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 533 m_webView->resize(WebSize(viewportWidth, viewportHeight));
515 534
516 // The page must be displayed at 100% zoom. 535 // The page must be displayed at 100% zoom.
517 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); 536 EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
518 } 537 }
519 538
520 TEST_F(WebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport) 539 TEST_F(WebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport)
521 { 540 {
522 registerMockedHttpURLLoad("large-div.html"); 541 registerMockedHttpURLLoad("large-div.html");
523 542
524 FixedLayoutTestWebViewClient client; 543 FixedLayoutTestWebViewClient client;
525 client.m_screenInfo.deviceScaleFactor = 1; 544 client.m_screenInfo.deviceScaleFactor = 1;
526 int viewportWidth = 640; 545 int viewportWidth = 640;
527 int viewportHeight = 480; 546 int viewportHeight = 480;
528 547
529 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "large-div.ht ml", true, 0, &client); 548 initializeWebViewAndLoad(m_baseURL + "large-div.html", true, 0, &client);
530 m_webView->enableFixedLayoutMode(true); 549 m_webView->enableFixedLayoutMode(true);
531 m_webView->settings()->setViewportEnabled(true); 550 m_webView->settings()->setViewportEnabled(true);
532 m_webView->settings()->setLoadWithOverviewMode(false); 551 m_webView->settings()->setLoadWithOverviewMode(false);
533 m_webView->settings()->setUseWideViewport(false); 552 m_webView->settings()->setUseWideViewport(false);
534 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 553 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
535 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 554 m_webView->resize(WebSize(viewportWidth, viewportHeight));
536 555
537 // The page must be displayed at 100% zoom, despite that it hosts a wide div element. 556 // The page must be displayed at 100% zoom, despite that it hosts a wide div element.
538 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); 557 EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
539 } 558 }
540 559
541 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth) 560 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth)
542 { 561 {
543 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 562 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
544 563
545 FixedLayoutTestWebViewClient client; 564 FixedLayoutTestWebViewClient client;
546 client.m_screenInfo.deviceScaleFactor = 1; 565 client.m_screenInfo.deviceScaleFactor = 1;
547 int viewportWidth = 640; 566 int viewportWidth = 640;
548 int viewportHeight = 480; 567 int viewportHeight = 480;
549 568
550 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut o-initial-scale.html", true, 0, &client); 569 initializeWebViewAndLoad(m_baseURL + "viewport-auto-initial-scale.html", tru e, 0, &client);
551 m_webView->enableFixedLayoutMode(true); 570 m_webView->enableFixedLayoutMode(true);
552 m_webView->settings()->setViewportEnabled(true); 571 m_webView->settings()->setViewportEnabled(true);
553 m_webView->settings()->setUseWideViewport(false); 572 m_webView->settings()->setUseWideViewport(false);
554 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 573 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
555 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 574 m_webView->resize(WebSize(viewportWidth, viewportHeight));
556 575
557 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored. 576 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
558 EXPECT_EQ(viewportWidth, webViewImpl()->mainFrameImpl()->frameView()->conten tsSize().width()); 577 EXPECT_EQ(viewportWidth, webViewImpl()->mainFrameImpl()->frameView()->conten tsSize().width());
559 EXPECT_EQ(viewportHeight, webViewImpl()->mainFrameImpl()->frameView()->conte ntsSize().height()); 578 EXPECT_EQ(viewportHeight, webViewImpl()->mainFrameImpl()->frameView()->conte ntsSize().height());
560 } 579 }
561 580
562 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale) 581 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale)
563 { 582 {
564 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 583 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
565 584
566 FixedLayoutTestWebViewClient client; 585 FixedLayoutTestWebViewClient client;
567 client.m_screenInfo.deviceScaleFactor = 1; 586 client.m_screenInfo.deviceScaleFactor = 1;
568 int viewportWidth = 640; 587 int viewportWidth = 640;
569 int viewportHeight = 480; 588 int viewportHeight = 480;
570 589
571 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid e-2x-initial-scale.html", true, 0, &client); 590 initializeWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client);
572 m_webView->enableFixedLayoutMode(true); 591 m_webView->enableFixedLayoutMode(true);
573 m_webView->settings()->setViewportEnabled(true); 592 m_webView->settings()->setViewportEnabled(true);
574 m_webView->settings()->setUseWideViewport(false); 593 m_webView->settings()->setUseWideViewport(false);
575 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 594 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
576 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 595 m_webView->resize(WebSize(viewportWidth, viewportHeight));
577 596
578 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored. 597 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
579 // While the initial scale specified by the page must be accounted. 598 // While the initial scale specified by the page must be accounted.
580 EXPECT_EQ(viewportWidth / 2, webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 599 EXPECT_EQ(viewportWidth / 2, webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
581 EXPECT_EQ(viewportHeight / 2, webViewImpl()->mainFrameImpl()->frameView()->c ontentsSize().height()); 600 EXPECT_EQ(viewportHeight / 2, webViewImpl()->mainFrameImpl()->frameView()->c ontentsSize().height());
582 } 601 }
583 602
584 TEST_F(WebFrameTest, WideViewportSetsTo980WithoutViewportTag) 603 TEST_F(WebFrameTest, WideViewportSetsTo980WithoutViewportTag)
585 { 604 {
586 registerMockedHttpURLLoad("no_viewport_tag.html"); 605 registerMockedHttpURLLoad("no_viewport_tag.html");
587 606
588 FixedLayoutTestWebViewClient client; 607 FixedLayoutTestWebViewClient client;
589 client.m_screenInfo.deviceScaleFactor = 1; 608 client.m_screenInfo.deviceScaleFactor = 1;
590 int viewportWidth = 640; 609 int viewportWidth = 640;
591 int viewportHeight = 480; 610 int viewportHeight = 480;
592 611
593 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_viewport_ tag.html", true, 0, &client); 612 initializeWebViewAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &clien t);
594 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 613 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
595 m_webView->enableFixedLayoutMode(true); 614 m_webView->enableFixedLayoutMode(true);
596 m_webView->settings()->setUseWideViewport(true); 615 m_webView->settings()->setUseWideViewport(true);
597 m_webView->settings()->setViewportEnabled(true); 616 m_webView->settings()->setViewportEnabled(true);
598 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 617 m_webView->resize(WebSize(viewportWidth, viewportHeight));
599 618
600 EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().w idth()); 619 EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().w idth());
601 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewImpl()->mainFrameIm pl()->frameView()->contentsSize().height()); 620 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewImpl()->mainFrameIm pl()->frameView()->contentsSize().height());
602 } 621 }
603 622
604 TEST_F(WebFrameTest, NoWideViewportAndHeightInMeta) 623 TEST_F(WebFrameTest, NoWideViewportAndHeightInMeta)
605 { 624 {
606 registerMockedHttpURLLoad("viewport-height-1000.html"); 625 registerMockedHttpURLLoad("viewport-height-1000.html");
607 626
608 FixedLayoutTestWebViewClient client; 627 FixedLayoutTestWebViewClient client;
609 client.m_screenInfo.deviceScaleFactor = 1; 628 client.m_screenInfo.deviceScaleFactor = 1;
610 int viewportWidth = 640; 629 int viewportWidth = 640;
611 int viewportHeight = 480; 630 int viewportHeight = 480;
612 631
613 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-hei ght-1000.html", true, 0, &client); 632 initializeWebViewAndLoad(m_baseURL + "viewport-height-1000.html", true, 0, & client);
614 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 633 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
615 m_webView->enableFixedLayoutMode(true); 634 m_webView->enableFixedLayoutMode(true);
616 m_webView->settings()->setUseWideViewport(false); 635 m_webView->settings()->setUseWideViewport(false);
617 m_webView->settings()->setViewportEnabled(true); 636 m_webView->settings()->setViewportEnabled(true);
618 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 637 m_webView->resize(WebSize(viewportWidth, viewportHeight));
619 638
620 EXPECT_EQ(viewportWidth, webViewImpl()->mainFrameImpl()->frameView()->conten tsSize().width()); 639 EXPECT_EQ(viewportWidth, webViewImpl()->mainFrameImpl()->frameView()->conten tsSize().width());
621 } 640 }
622 641
623 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth) 642 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth)
624 { 643 {
625 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); 644 registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
626 645
627 FixedLayoutTestWebViewClient client; 646 FixedLayoutTestWebViewClient client;
628 client.m_screenInfo.deviceScaleFactor = 1; 647 client.m_screenInfo.deviceScaleFactor = 1;
629 int viewportWidth = 640; 648 int viewportWidth = 640;
630 int viewportHeight = 480; 649 int viewportHeight = 480;
631 650
632 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x- initial-scale.html", true, 0, &client); 651 initializeWebViewAndLoad(m_baseURL + "viewport-2x-initial-scale.html", true, 0, &client);
633 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 652 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
634 m_webView->enableFixedLayoutMode(true); 653 m_webView->enableFixedLayoutMode(true);
635 m_webView->settings()->setUseWideViewport(true); 654 m_webView->settings()->setUseWideViewport(true);
636 m_webView->settings()->setViewportEnabled(true); 655 m_webView->settings()->setViewportEnabled(true);
637 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 656 m_webView->resize(WebSize(viewportWidth, viewportHeight));
638 657
639 EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().w idth()); 658 EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().w idth());
640 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewImpl()->mainFrameIm pl()->frameView()->contentsSize().height()); 659 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewImpl()->mainFrameIm pl()->frameView()->contentsSize().height());
641 } 660 }
642 661
643 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesLoadWithOverviewMode) 662 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesLoadWithOverviewMode)
644 { 663 {
645 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 664 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
646 665
647 FixedLayoutTestWebViewClient client; 666 FixedLayoutTestWebViewClient client;
648 client.m_screenInfo.deviceScaleFactor = 1; 667 client.m_screenInfo.deviceScaleFactor = 1;
649 int viewportWidth = 640; 668 int viewportWidth = 640;
650 int viewportHeight = 480; 669 int viewportHeight = 480;
651 670
652 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid e-2x-initial-scale.html", true, 0, &client); 671 initializeWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client);
653 m_webView->enableFixedLayoutMode(true); 672 m_webView->enableFixedLayoutMode(true);
654 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 673 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
655 m_webView->settings()->setViewportEnabled(true); 674 m_webView->settings()->setViewportEnabled(true);
656 m_webView->settings()->setLoadWithOverviewMode(false); 675 m_webView->settings()->setLoadWithOverviewMode(false);
657 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 676 m_webView->resize(WebSize(viewportWidth, viewportHeight));
658 677
659 // The page must be displayed at 200% zoom, as specified in its viewport met a tag. 678 // The page must be displayed at 200% zoom, as specified in its viewport met a tag.
660 EXPECT_EQ(2.0f, m_webView->pageScaleFactor()); 679 EXPECT_EQ(2.0f, m_webView->pageScaleFactor());
661 } 680 }
662 681
663 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently) 682 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently)
664 { 683 {
665 WebCore::Settings::setMockScrollbarsEnabled(true); 684 WebCore::Settings::setMockScrollbarsEnabled(true);
666 WebCore::Settings::setUsesOverlayScrollbars(true); 685 WebCore::Settings::setUsesOverlayScrollbars(true);
667 686
668 registerMockedHttpURLLoad("fixed_layout.html"); 687 registerMockedHttpURLLoad("fixed_layout.html");
669 688
670 FixedLayoutTestWebViewClient client; 689 FixedLayoutTestWebViewClient client;
671 client.m_screenInfo.deviceScaleFactor = 1; 690 client.m_screenInfo.deviceScaleFactor = 1;
672 float enforcedPageScaleFactor = 2.0f; 691 float enforcedPageScaleFactor = 2.0f;
673 692
674 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 693 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
675 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 694 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
676 m_webView->settings()->setLoadWithOverviewMode(false); 695 m_webView->settings()->setLoadWithOverviewMode(false);
677 m_webView->setInitialPageScaleOverride(enforcedPageScaleFactor); 696 m_webView->setInitialPageScaleOverride(enforcedPageScaleFactor);
678 m_webView->enableFixedLayoutMode(true); 697 m_webView->enableFixedLayoutMode(true);
679 m_webView->settings()->setViewportEnabled(true); 698 m_webView->settings()->setViewportEnabled(true);
680 m_webView->layout(); 699 m_webView->layout();
681 700
682 EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor()); 701 EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor());
683 702
684 int viewportWidth = 640; 703 int viewportWidth = 640;
(...skipping 11 matching lines...) Expand all
696 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWithOverviewMod e) 715 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWithOverviewMod e)
697 { 716 {
698 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 717 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
699 718
700 FixedLayoutTestWebViewClient client; 719 FixedLayoutTestWebViewClient client;
701 client.m_screenInfo.deviceScaleFactor = 1; 720 client.m_screenInfo.deviceScaleFactor = 1;
702 int viewportWidth = 640; 721 int viewportWidth = 640;
703 int viewportHeight = 480; 722 int viewportHeight = 480;
704 float enforcedPageScalePactor = 0.5f; 723 float enforcedPageScalePactor = 0.5f;
705 724
706 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut o-initial-scale.html", true, 0, &client); 725 initializeWebViewAndLoad(m_baseURL + "viewport-auto-initial-scale.html", tru e, 0, &client);
707 m_webView->enableFixedLayoutMode(true); 726 m_webView->enableFixedLayoutMode(true);
708 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 727 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
709 m_webView->settings()->setViewportEnabled(true); 728 m_webView->settings()->setViewportEnabled(true);
710 m_webView->settings()->setLoadWithOverviewMode(false); 729 m_webView->settings()->setLoadWithOverviewMode(false);
711 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); 730 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor);
712 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 731 m_webView->resize(WebSize(viewportWidth, viewportHeight));
713 732
714 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); 733 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor());
715 } 734 }
716 735
717 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale) 736 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale)
718 { 737 {
719 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 738 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
720 739
721 FixedLayoutTestWebViewClient client; 740 FixedLayoutTestWebViewClient client;
722 client.m_screenInfo.deviceScaleFactor = 1; 741 client.m_screenInfo.deviceScaleFactor = 1;
723 int viewportWidth = 640; 742 int viewportWidth = 640;
724 int viewportHeight = 480; 743 int viewportHeight = 480;
725 float enforcedPageScalePactor = 0.5f; 744 float enforcedPageScalePactor = 0.5f;
726 745
727 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid e-2x-initial-scale.html", true, 0, &client); 746 initializeWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client);
728 m_webView->enableFixedLayoutMode(true); 747 m_webView->enableFixedLayoutMode(true);
729 m_webView->settings()->setViewportEnabled(true); 748 m_webView->settings()->setViewportEnabled(true);
730 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); 749 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor);
731 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 750 m_webView->resize(WebSize(viewportWidth, viewportHeight));
732 751
733 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); 752 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor());
734 } 753 }
735 754
736 TEST_F(WebFrameTest, WideViewportInitialScaleDoesNotExpandFixedLayoutWidth) 755 TEST_F(WebFrameTest, WideViewportInitialScaleDoesNotExpandFixedLayoutWidth)
737 { 756 {
738 registerMockedHttpURLLoad("viewport-device-0.5x-initial-scale.html"); 757 registerMockedHttpURLLoad("viewport-device-0.5x-initial-scale.html");
739 758
740 FixedLayoutTestWebViewClient client; 759 FixedLayoutTestWebViewClient client;
741 client.m_screenInfo.deviceScaleFactor = 1; 760 client.m_screenInfo.deviceScaleFactor = 1;
742 int viewportWidth = 640; 761 int viewportWidth = 640;
743 int viewportHeight = 480; 762 int viewportHeight = 480;
744 763
745 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-dev ice-0.5x-initial-scale.html", true, 0, &client); 764 initializeWebViewAndLoad(m_baseURL + "viewport-device-0.5x-initial-scale.htm l", true, 0, &client);
746 m_webView->enableFixedLayoutMode(true); 765 m_webView->enableFixedLayoutMode(true);
747 m_webView->settings()->setViewportEnabled(true); 766 m_webView->settings()->setViewportEnabled(true);
748 m_webView->settings()->setUseWideViewport(true); 767 m_webView->settings()->setUseWideViewport(true);
749 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 768 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
750 m_webView->settings()->setViewportMetaLayoutSizeQuirk(true); 769 m_webView->settings()->setViewportMetaLayoutSizeQuirk(true);
751 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 770 m_webView->resize(WebSize(viewportWidth, viewportHeight));
752 771
753 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); 772 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
754 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->fixedLay outSize().width()); 773 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->fixedLay outSize().width());
755 } 774 }
756 775
757 TEST_F(WebFrameTest, ZeroValuesQuirk) 776 TEST_F(WebFrameTest, ZeroValuesQuirk)
758 { 777 {
759 registerMockedHttpURLLoad("viewport-zero-values.html"); 778 registerMockedHttpURLLoad("viewport-zero-values.html");
760 779
761 FixedLayoutTestWebViewClient client; 780 FixedLayoutTestWebViewClient client;
762 client.m_screenInfo.deviceScaleFactor = 1; 781 client.m_screenInfo.deviceScaleFactor = 1;
763 int viewportWidth = 640; 782 int viewportWidth = 640;
764 int viewportHeight = 480; 783 int viewportHeight = 480;
765 784
766 m_webView = FrameTestHelpers::createWebView(true, 0, &client); 785 initializeWebView(true, 0, &client);
767 m_webView->enableFixedLayoutMode(true); 786 m_webView->enableFixedLayoutMode(true);
768 m_webView->settings()->setViewportEnabled(true); 787 m_webView->settings()->setViewportEnabled(true);
769 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 788 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
770 m_webView->settings()->setViewportMetaZeroValuesQuirk(true); 789 m_webView->settings()->setViewportMetaZeroValuesQuirk(true);
771 FrameTestHelpers::loadFrame(m_webView->mainFrame(), m_baseURL + "viewport-ze ro-values.html"); 790 FrameTestHelpers::loadFrame(m_webView->mainFrame(), m_baseURL + "viewport-ze ro-values.html");
772 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 791 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
773 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 792 m_webView->resize(WebSize(viewportWidth, viewportHeight));
774 793
775 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); 794 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
776 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->fixedLay outSize().width()); 795 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->fixedLay outSize().width());
777 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); 796 EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
778 797
779 m_webView->settings()->setUseWideViewport(true); 798 m_webView->settings()->setUseWideViewport(true);
780 m_webView->layout(); 799 m_webView->layout();
781 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->fixedLay outSize().width()); 800 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->fixedLay outSize().width());
782 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); 801 EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
783 } 802 }
784 803
785 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate) 804 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate)
786 { 805 {
787 registerMockedHttpURLLoad("scale_oscillate.html"); 806 registerMockedHttpURLLoad("scale_oscillate.html");
788 807
789 FixedLayoutTestWebViewClient client; 808 FixedLayoutTestWebViewClient client;
790 client.m_screenInfo.deviceScaleFactor = static_cast<float>(1.325); 809 client.m_screenInfo.deviceScaleFactor = static_cast<float>(1.325);
791 int viewportWidth = 800; 810 int viewportWidth = 800;
792 int viewportHeight = 1057; 811 int viewportHeight = 1057;
793 812
794 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "scale_oscill ate.html", true, 0, &client); 813 initializeWebViewAndLoad(m_baseURL + "scale_oscillate.html", true, 0, &clien t);
795 m_webView->enableFixedLayoutMode(true); 814 m_webView->enableFixedLayoutMode(true);
796 m_webView->settings()->setViewportEnabled(true); 815 m_webView->settings()->setViewportEnabled(true);
797 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 816 m_webView->resize(WebSize(viewportWidth, viewportHeight));
798 m_webView->layout(); 817 m_webView->layout();
799 } 818 }
800 819
801 TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout) 820 TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout)
802 { 821 {
803 registerMockedHttpURLLoad("fixed_layout.html"); 822 registerMockedHttpURLLoad("fixed_layout.html");
804 823
805 FixedLayoutTestWebViewClient client; 824 FixedLayoutTestWebViewClient client;
806 client.m_screenInfo.deviceScaleFactor = 1; 825 client.m_screenInfo.deviceScaleFactor = 1;
807 // Small viewport to ensure there are always scrollbars. 826 // Small viewport to ensure there are always scrollbars.
808 int viewportWidth = 64; 827 int viewportWidth = 64;
809 int viewportHeight = 48; 828 int viewportHeight = 48;
810 829
811 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 830 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
812 m_webView->enableFixedLayoutMode(true); 831 m_webView->enableFixedLayoutMode(true);
813 m_webView->settings()->setViewportEnabled(true); 832 m_webView->settings()->setViewportEnabled(true);
814 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 833 m_webView->resize(WebSize(viewportWidth, viewportHeight));
815 m_webView->layout(); 834 m_webView->layout();
816 835
817 int prevLayoutCount = webViewImpl()->mainFrameImpl()->frameView()->layoutCou nt(); 836 int prevLayoutCount = webViewImpl()->mainFrameImpl()->frameView()->layoutCou nt();
818 webViewImpl()->setPageScaleFactor(3, WebPoint()); 837 webViewImpl()->setPageScaleFactor(3, WebPoint());
819 EXPECT_FALSE(webViewImpl()->mainFrameImpl()->frameView()->needsLayout()); 838 EXPECT_FALSE(webViewImpl()->mainFrameImpl()->frameView()->needsLayout());
820 EXPECT_EQ(prevLayoutCount, webViewImpl()->mainFrameImpl()->frameView()->layo utCount()); 839 EXPECT_EQ(prevLayoutCount, webViewImpl()->mainFrameImpl()->frameView()->layo utCount());
821 } 840 }
822 841
823 TEST_F(WebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNotLayout) 842 TEST_F(WebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNotLayout)
824 { 843 {
825 WebCore::Settings::setMockScrollbarsEnabled(true); 844 WebCore::Settings::setMockScrollbarsEnabled(true);
826 WebCore::Settings::setUsesOverlayScrollbars(true); 845 WebCore::Settings::setUsesOverlayScrollbars(true);
827 EXPECT_TRUE(WebCore::ScrollbarTheme::theme()->usesOverlayScrollbars()); 846 EXPECT_TRUE(WebCore::ScrollbarTheme::theme()->usesOverlayScrollbars());
828 847
829 registerMockedHttpURLLoad("fixed_layout.html"); 848 registerMockedHttpURLLoad("fixed_layout.html");
830 849
831 FixedLayoutTestWebViewClient client; 850 FixedLayoutTestWebViewClient client;
832 client.m_screenInfo.deviceScaleFactor = 1; 851 client.m_screenInfo.deviceScaleFactor = 1;
833 int viewportWidth = 640; 852 int viewportWidth = 640;
834 int viewportHeight = 480; 853 int viewportHeight = 480;
835 854
836 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 855 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
837 m_webView->enableFixedLayoutMode(true); 856 m_webView->enableFixedLayoutMode(true);
838 m_webView->settings()->setViewportEnabled(true); 857 m_webView->settings()->setViewportEnabled(true);
839 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 858 m_webView->resize(WebSize(viewportWidth, viewportHeight));
840 m_webView->layout(); 859 m_webView->layout();
841 860
842 int prevLayoutCount = webViewImpl()->mainFrameImpl()->frameView()->layoutCou nt(); 861 int prevLayoutCount = webViewImpl()->mainFrameImpl()->frameView()->layoutCou nt();
843 webViewImpl()->setPageScaleFactor(30, WebPoint()); 862 webViewImpl()->setPageScaleFactor(30, WebPoint());
844 EXPECT_FALSE(webViewImpl()->mainFrameImpl()->frameView()->needsLayout()); 863 EXPECT_FALSE(webViewImpl()->mainFrameImpl()->frameView()->needsLayout());
845 EXPECT_EQ(prevLayoutCount, webViewImpl()->mainFrameImpl()->frameView()->layo utCount()); 864 EXPECT_EQ(prevLayoutCount, webViewImpl()->mainFrameImpl()->frameView()->layo utCount());
846 865
847 WebCore::Settings::setMockScrollbarsEnabled(false); 866 WebCore::Settings::setMockScrollbarsEnabled(false);
848 WebCore::Settings::setUsesOverlayScrollbars(false); 867 WebCore::Settings::setUsesOverlayScrollbars(false);
849 } 868 }
850 869
851 TEST_F(WebFrameTest, setPageScaleFactorBeforeFrameHasView) 870 TEST_F(WebFrameTest, setPageScaleFactorBeforeFrameHasView)
852 { 871 {
853 registerMockedHttpURLLoad("fixed_layout.html"); 872 registerMockedHttpURLLoad("fixed_layout.html");
854 873
855 float pageScaleFactor = 3; 874 float pageScaleFactor = 3;
856 m_webView = FrameTestHelpers::createWebViewAndLoad("about:html", true, 0, 0) ; 875 initializeWebViewAndLoad("about:html", true, 0, 0);
857 m_webView->setPageScaleFactor(pageScaleFactor, WebPoint()); 876 m_webView->setPageScaleFactor(pageScaleFactor, WebPoint());
858 877
859 FrameTestHelpers::loadFrame(m_webView->mainFrame(), m_baseURL + "fixed_layou t.html"); 878 FrameTestHelpers::loadFrame(m_webView->mainFrame(), m_baseURL + "fixed_layou t.html");
860 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 879 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
861 WebCore::FrameView* view = webViewImpl()->mainFrameImpl()->frameView(); 880 WebCore::FrameView* view = webViewImpl()->mainFrameImpl()->frameView();
862 EXPECT_EQ(pageScaleFactor, view->visibleContentScaleFactor()); 881 EXPECT_EQ(pageScaleFactor, view->visibleContentScaleFactor());
863 } 882 }
864 883
865 TEST_F(WebFrameTest, pageScaleFactorWrittenToHistoryItem) 884 TEST_F(WebFrameTest, pageScaleFactorWrittenToHistoryItem)
866 { 885 {
867 registerMockedHttpURLLoad("fixed_layout.html"); 886 registerMockedHttpURLLoad("fixed_layout.html");
868 887
869 FixedLayoutTestWebViewClient client; 888 FixedLayoutTestWebViewClient client;
870 client.m_screenInfo.deviceScaleFactor = 1; 889 client.m_screenInfo.deviceScaleFactor = 1;
871 int viewportWidth = 640; 890 int viewportWidth = 640;
872 int viewportHeight = 480; 891 int viewportHeight = 480;
873 892
874 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 893 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
875 m_webView->enableFixedLayoutMode(true); 894 m_webView->enableFixedLayoutMode(true);
876 m_webView->settings()->setViewportEnabled(true); 895 m_webView->settings()->setViewportEnabled(true);
877 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 896 m_webView->resize(WebSize(viewportWidth, viewportHeight));
878 m_webView->layout(); 897 m_webView->layout();
879 898
880 m_webView->setPageScaleFactor(3, WebPoint()); 899 m_webView->setPageScaleFactor(3, WebPoint());
881 webViewImpl()->page()->mainFrame()->loader()->history()->saveDocumentAndScro llState(); 900 webViewImpl()->page()->mainFrame()->loader()->history()->saveDocumentAndScro llState();
882 m_webView->setPageScaleFactor(1, WebPoint()); 901 m_webView->setPageScaleFactor(1, WebPoint());
883 webViewImpl()->page()->mainFrame()->loader()->history()->restoreScrollPositi onAndViewState(); 902 webViewImpl()->page()->mainFrame()->loader()->history()->restoreScrollPositi onAndViewState();
884 EXPECT_EQ(3, m_webView->pageScaleFactor()); 903 EXPECT_EQ(3, m_webView->pageScaleFactor());
885 } 904 }
886 905
887 TEST_F(WebFrameTest, pageScaleFactorShrinksViewport) 906 TEST_F(WebFrameTest, pageScaleFactorShrinksViewport)
888 { 907 {
889 registerMockedHttpURLLoad("fixed_layout.html"); 908 registerMockedHttpURLLoad("fixed_layout.html");
890 909
891 FixedLayoutTestWebViewClient client; 910 FixedLayoutTestWebViewClient client;
892 client.m_screenInfo.deviceScaleFactor = 1; 911 client.m_screenInfo.deviceScaleFactor = 1;
893 // Small viewport to ensure there are always scrollbars. 912 // Small viewport to ensure there are always scrollbars.
894 int viewportWidth = 64; 913 int viewportWidth = 64;
895 int viewportHeight = 48; 914 int viewportHeight = 48;
896 915
897 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 916 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
898 m_webView->enableFixedLayoutMode(true); 917 m_webView->enableFixedLayoutMode(true);
899 m_webView->settings()->setViewportEnabled(true); 918 m_webView->settings()->setViewportEnabled(true);
900 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 919 m_webView->resize(WebSize(viewportWidth, viewportHeight));
901 m_webView->layout(); 920 m_webView->layout();
902 921
903 WebCore::FrameView* view = webViewImpl()->mainFrameImpl()->frameView(); 922 WebCore::FrameView* view = webViewImpl()->mainFrameImpl()->frameView();
904 int viewportWidthMinusScrollbar = viewportWidth - (view->verticalScrollbar() ->isOverlayScrollbar() ? 0 : 15); 923 int viewportWidthMinusScrollbar = viewportWidth - (view->verticalScrollbar() ->isOverlayScrollbar() ? 0 : 15);
905 int viewportHeightMinusScrollbar = viewportHeight - (view->horizontalScrollb ar()->isOverlayScrollbar() ? 0 : 15); 924 int viewportHeightMinusScrollbar = viewportHeight - (view->horizontalScrollb ar()->isOverlayScrollbar() ? 0 : 15);
906 925
907 m_webView->setPageScaleFactor(2, WebPoint()); 926 m_webView->setPageScaleFactor(2, WebPoint());
(...skipping 13 matching lines...) Expand all
921 940
922 TEST_F(WebFrameTest, pageScaleFactorDoesNotApplyCssTransform) 941 TEST_F(WebFrameTest, pageScaleFactorDoesNotApplyCssTransform)
923 { 942 {
924 registerMockedHttpURLLoad("fixed_layout.html"); 943 registerMockedHttpURLLoad("fixed_layout.html");
925 944
926 FixedLayoutTestWebViewClient client; 945 FixedLayoutTestWebViewClient client;
927 client.m_screenInfo.deviceScaleFactor = 1; 946 client.m_screenInfo.deviceScaleFactor = 1;
928 int viewportWidth = 640; 947 int viewportWidth = 640;
929 int viewportHeight = 480; 948 int viewportHeight = 480;
930 949
931 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 950 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
932 m_webView->enableFixedLayoutMode(true); 951 m_webView->enableFixedLayoutMode(true);
933 m_webView->settings()->setViewportEnabled(true); 952 m_webView->settings()->setViewportEnabled(true);
934 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 953 m_webView->resize(WebSize(viewportWidth, viewportHeight));
935 m_webView->layout(); 954 m_webView->layout();
936 955
937 m_webView->setPageScaleFactor(2, WebPoint()); 956 m_webView->setPageScaleFactor(2, WebPoint());
938 957
939 EXPECT_EQ(980, webViewImpl()->page()->mainFrame()->contentRenderer()->unscal edDocumentRect().width()); 958 EXPECT_EQ(980, webViewImpl()->page()->mainFrame()->contentRenderer()->unscal edDocumentRect().width());
940 EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().w idth()); 959 EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().w idth());
941 } 960 }
942 961
943 TEST_F(WebFrameTest, targetDensityDpiHigh) 962 TEST_F(WebFrameTest, targetDensityDpiHigh)
944 { 963 {
945 WebCore::Settings::setMockScrollbarsEnabled(true); 964 WebCore::Settings::setMockScrollbarsEnabled(true);
946 WebCore::Settings::setUsesOverlayScrollbars(true); 965 WebCore::Settings::setUsesOverlayScrollbars(true);
947 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); 966 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html");
948 967
949 FixedLayoutTestWebViewClient client; 968 FixedLayoutTestWebViewClient client;
950 // high-dpi = 240 969 // high-dpi = 240
951 float targetDpi = 240.0f; 970 float targetDpi = 240.0f;
952 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 971 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
953 int viewportWidth = 640; 972 int viewportWidth = 640;
954 int viewportHeight = 480; 973 int viewportHeight = 480;
955 974
956 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 975 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
957 float deviceScaleFactor = deviceScaleFactors[i]; 976 float deviceScaleFactor = deviceScaleFactors[i];
958 float deviceDpi = deviceScaleFactor * 160.0f; 977 float deviceDpi = deviceScaleFactor * 160.0f;
959 client.m_screenInfo.deviceScaleFactor = deviceScaleFactor; 978 client.m_screenInfo.deviceScaleFactor = deviceScaleFactor;
960 979
961 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport -target-densitydpi-high.html", true, 0, &client); 980 initializeWebViewAndLoad(m_baseURL + "viewport-target-densitydpi-high.ht ml", true, 0, &client);
962 m_webView->enableFixedLayoutMode(true); 981 m_webView->enableFixedLayoutMode(true);
963 m_webView->settings()->setViewportEnabled(true); 982 m_webView->settings()->setViewportEnabled(true);
964 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 983 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
965 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 984 m_webView->resize(WebSize(viewportWidth, viewportHeight));
966 985
967 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce 986 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce
968 // physical pixels. 987 // physical pixels.
969 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi; 988 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi;
970 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, m_webView->fixedLayout Size().width, 1.0f); 989 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, m_webView->fixedLayout Size().width, 1.0f);
971 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, m_webView->fixedLayou tSize().height, 1.0f); 990 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, m_webView->fixedLayou tSize().height, 1.0f);
(...skipping 12 matching lines...) Expand all
984 1003
985 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1004 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
986 1005
987 FixedLayoutTestWebViewClient client; 1006 FixedLayoutTestWebViewClient client;
988 int viewportWidth = 640; 1007 int viewportWidth = 640;
989 int viewportHeight = 480; 1008 int viewportHeight = 480;
990 1009
991 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 1010 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
992 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 1011 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
993 1012
994 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport -target-densitydpi-device.html", true, 0, &client); 1013 initializeWebViewAndLoad(m_baseURL + "viewport-target-densitydpi-device. html", true, 0, &client);
995 m_webView->enableFixedLayoutMode(true); 1014 m_webView->enableFixedLayoutMode(true);
996 m_webView->settings()->setViewportEnabled(true); 1015 m_webView->settings()->setViewportEnabled(true);
997 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); 1016 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
998 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1017 m_webView->resize(WebSize(viewportWidth, viewportHeight));
999 1018
1000 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, m_web View->fixedLayoutSize().width, 1.0f); 1019 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, m_web View->fixedLayoutSize().width, 1.0f);
1001 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, m_we bView->fixedLayoutSize().height, 1.0f); 1020 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, m_we bView->fixedLayoutSize().height, 1.0f);
1002 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, m_webView->pag eScaleFactor(), 0.01f); 1021 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, m_webView->pag eScaleFactor(), 0.01f);
1003 1022
1004 m_webView->close(); 1023 m_webView->close();
(...skipping 13 matching lines...) Expand all
1018 1037
1019 void testResizeYieldsCorrectScrollAndScale(const char* url, 1038 void testResizeYieldsCorrectScrollAndScale(const char* url,
1020 const float initialPageScaleFacto r, 1039 const float initialPageScaleFacto r,
1021 const WebSize scrollOffset, 1040 const WebSize scrollOffset,
1022 const WebSize viewportSize, 1041 const WebSize viewportSize,
1023 const bool shouldScaleRelativeToV iewportWidth) { 1042 const bool shouldScaleRelativeToV iewportWidth) {
1024 registerMockedHttpURLLoad(url); 1043 registerMockedHttpURLLoad(url);
1025 1044
1026 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp ortSize.height; 1045 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp ortSize.height;
1027 1046
1028 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + url, true ); 1047 initializeWebViewAndLoad(m_baseURL + url, true);
1029 m_webView->settings()->setViewportEnabled(true); 1048 m_webView->settings()->setViewportEnabled(true);
1030 m_webView->enableFixedLayoutMode(true); 1049 m_webView->enableFixedLayoutMode(true);
1031 1050
1032 // Origin scrollOffsets preserved under resize. 1051 // Origin scrollOffsets preserved under resize.
1033 { 1052 {
1034 webViewImpl()->resize(WebSize(viewportSize.width, viewportSize.heigh t)); 1053 webViewImpl()->resize(WebSize(viewportSize.width, viewportSize.heigh t));
1035 webViewImpl()->setPageScaleFactor(initialPageScaleFactor, WebPoint() ); 1054 webViewImpl()->setPageScaleFactor(initialPageScaleFactor, WebPoint() );
1036 ASSERT_EQ(viewportSize, webViewImpl()->size()); 1055 ASSERT_EQ(viewportSize, webViewImpl()->size());
1037 ASSERT_EQ(initialPageScaleFactor, webViewImpl()->pageScaleFactor()); 1056 ASSERT_EQ(initialPageScaleFactor, webViewImpl()->pageScaleFactor());
1038 webViewImpl()->resize(WebSize(viewportSize.height, viewportSize.widt h)); 1057 webViewImpl()->resize(WebSize(viewportSize.height, viewportSize.widt h));
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 1144
1126 TEST_F(WebFrameTest, pageScaleFactorScalesPaintClip) 1145 TEST_F(WebFrameTest, pageScaleFactorScalesPaintClip)
1127 { 1146 {
1128 registerMockedHttpURLLoad("fixed_layout.html"); 1147 registerMockedHttpURLLoad("fixed_layout.html");
1129 1148
1130 FixedLayoutTestWebViewClient client; 1149 FixedLayoutTestWebViewClient client;
1131 client.m_screenInfo.deviceScaleFactor = 1; 1150 client.m_screenInfo.deviceScaleFactor = 1;
1132 int viewportWidth = 50; 1151 int viewportWidth = 50;
1133 int viewportHeight = 50; 1152 int viewportHeight = 50;
1134 1153
1135 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 1154 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
1136 m_webView->enableFixedLayoutMode(true); 1155 m_webView->enableFixedLayoutMode(true);
1137 m_webView->settings()->setViewportEnabled(true); 1156 m_webView->settings()->setViewportEnabled(true);
1138 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1157 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1139 m_webView->layout(); 1158 m_webView->layout();
1140 1159
1141 // Set <1 page scale so that the clip rect should be larger than 1160 // Set <1 page scale so that the clip rect should be larger than
1142 // the viewport size as passed into resize(). 1161 // the viewport size as passed into resize().
1143 m_webView->setPageScaleFactor(0.5, WebPoint()); 1162 m_webView->setPageScaleFactor(0.5, WebPoint());
1144 1163
1145 SkBitmap bitmap; 1164 SkBitmap bitmap;
(...skipping 19 matching lines...) Expand all
1165 1184
1166 TEST_F(WebFrameTest, pageScaleFactorUpdatesScrollbars) 1185 TEST_F(WebFrameTest, pageScaleFactorUpdatesScrollbars)
1167 { 1186 {
1168 registerMockedHttpURLLoad("fixed_layout.html"); 1187 registerMockedHttpURLLoad("fixed_layout.html");
1169 1188
1170 FixedLayoutTestWebViewClient client; 1189 FixedLayoutTestWebViewClient client;
1171 client.m_screenInfo.deviceScaleFactor = 1; 1190 client.m_screenInfo.deviceScaleFactor = 1;
1172 int viewportWidth = 640; 1191 int viewportWidth = 640;
1173 int viewportHeight = 480; 1192 int viewportHeight = 480;
1174 1193
1175 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout .html", true, 0, &client); 1194 initializeWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client);
1176 m_webView->enableFixedLayoutMode(true); 1195 m_webView->enableFixedLayoutMode(true);
1177 m_webView->settings()->setViewportEnabled(true); 1196 m_webView->settings()->setViewportEnabled(true);
1178 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1197 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1179 m_webView->layout(); 1198 m_webView->layout();
1180 1199
1181 WebCore::FrameView* view = webViewImpl()->mainFrameImpl()->frameView(); 1200 WebCore::FrameView* view = webViewImpl()->mainFrameImpl()->frameView();
1182 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width()); 1201 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width());
1183 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height()); 1202 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height());
1184 1203
1185 m_webView->setPageScaleFactor(10, WebPoint()); 1204 m_webView->setPageScaleFactor(10, WebPoint());
1186 1205
1187 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width()); 1206 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width());
1188 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height()); 1207 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height());
1189 } 1208 }
1190 1209
1191 TEST_F(WebFrameTest, CanOverrideScaleLimits) 1210 TEST_F(WebFrameTest, CanOverrideScaleLimits)
1192 { 1211 {
1193 WebCore::Settings::setMockScrollbarsEnabled(true); 1212 WebCore::Settings::setMockScrollbarsEnabled(true);
1194 WebCore::Settings::setUsesOverlayScrollbars(true); 1213 WebCore::Settings::setUsesOverlayScrollbars(true);
1195 1214
1196 registerMockedHttpURLLoad("no_scale_for_you.html"); 1215 registerMockedHttpURLLoad("no_scale_for_you.html");
1197 1216
1198 FixedLayoutTestWebViewClient client; 1217 FixedLayoutTestWebViewClient client;
1199 client.m_screenInfo.deviceScaleFactor = 1; 1218 client.m_screenInfo.deviceScaleFactor = 1;
1200 int viewportWidth = 640; 1219 int viewportWidth = 640;
1201 int viewportHeight = 480; 1220 int viewportHeight = 480;
1202 1221
1203 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_scale_for _you.html", true, 0, &client); 1222 initializeWebViewAndLoad(m_baseURL + "no_scale_for_you.html", true, 0, &clie nt);
1204 m_webView->enableFixedLayoutMode(true); 1223 m_webView->enableFixedLayoutMode(true);
1205 m_webView->settings()->setViewportEnabled(true); 1224 m_webView->settings()->setViewportEnabled(true);
1206 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1225 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1207 1226
1208 EXPECT_EQ(2.0f, m_webView->minimumPageScaleFactor()); 1227 EXPECT_EQ(2.0f, m_webView->minimumPageScaleFactor());
1209 EXPECT_EQ(2.0f, m_webView->maximumPageScaleFactor()); 1228 EXPECT_EQ(2.0f, m_webView->maximumPageScaleFactor());
1210 1229
1211 m_webView->setIgnoreViewportTagScaleLimits(true); 1230 m_webView->setIgnoreViewportTagScaleLimits(true);
1212 m_webView->layout(); 1231 m_webView->layout();
1213 1232
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1255 } 1274 }
1256 1275
1257 TEST_F(WebFrameTest, DivAutoZoomParamsTest) 1276 TEST_F(WebFrameTest, DivAutoZoomParamsTest)
1258 { 1277 {
1259 registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html"); 1278 registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html");
1260 1279
1261 const float deviceScaleFactor = 2.0f; 1280 const float deviceScaleFactor = 2.0f;
1262 int viewportWidth = 640 / deviceScaleFactor; 1281 int viewportWidth = 640 / deviceScaleFactor;
1263 int viewportHeight = 1280 / deviceScaleFactor; 1282 int viewportHeight = 1280 / deviceScaleFactor;
1264 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1283 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1265 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_fo r_auto_zoom_into_div_test.html"); // 1284 initializeWebViewAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_div_test. html");
1266 m_webView->setDeviceScaleFactor(deviceScaleFactor); 1285 m_webView->setDeviceScaleFactor(deviceScaleFactor);
1267 m_webView->setPageScaleFactorLimits(0.01f, 4); 1286 m_webView->setPageScaleFactorLimits(0.01f, 4);
1268 m_webView->setPageScaleFactor(0.5f, WebPoint(0, 0)); 1287 m_webView->setPageScaleFactor(0.5f, WebPoint(0, 0));
1269 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1288 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1270 m_webView->enableFixedLayoutMode(true); 1289 m_webView->enableFixedLayoutMode(true);
1271 m_webView->layout(); 1290 m_webView->layout();
1272 1291
1273 WebRect wideDiv(200, 100, 400, 150); 1292 WebRect wideDiv(200, 100, 400, 150);
1274 WebRect tallDiv(200, 300, 400, 800); 1293 WebRect tallDiv(200, 300, 400, 800);
1275 WebRect doubleTapPointWide(wideDiv.x + 50, wideDiv.y + 50, touchPointPadding , touchPointPadding); 1294 WebRect doubleTapPointWide(wideDiv.x + 50, wideDiv.y + 50, touchPointPadding , touchPointPadding);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 } 1354 }
1336 1355
1337 TEST_F(WebFrameTest, DivAutoZoomWideDivTest) 1356 TEST_F(WebFrameTest, DivAutoZoomWideDivTest)
1338 { 1357 {
1339 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html"); 1358 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html");
1340 1359
1341 const float deviceScaleFactor = 2.0f; 1360 const float deviceScaleFactor = 2.0f;
1342 int viewportWidth = 640 / deviceScaleFactor; 1361 int viewportWidth = 640 / deviceScaleFactor;
1343 int viewportHeight = 1280 / deviceScaleFactor; 1362 int viewportHeight = 1280 / deviceScaleFactor;
1344 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1363 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1345 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_wide_div _for_auto_zoom_test.html"); 1364 initializeWebViewAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test.html") ;
1346 m_webView->enableFixedLayoutMode(true); 1365 m_webView->enableFixedLayoutMode(true);
1347 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1366 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1348 m_webView->setPageScaleFactorLimits(1.0f, 4); 1367 m_webView->setPageScaleFactorLimits(1.0f, 4);
1349 m_webView->setDeviceScaleFactor(deviceScaleFactor); 1368 m_webView->setDeviceScaleFactor(deviceScaleFactor);
1350 m_webView->setPageScaleFactor(1.0f, WebPoint(0, 0)); 1369 m_webView->setPageScaleFactor(1.0f, WebPoint(0, 0));
1351 m_webView->layout(); 1370 m_webView->layout();
1352 1371
1353 webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1372 webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1354 1373
1355 float doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFact or() * doubleTapZoomAlreadyLegibleRatio; 1374 float doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFact or() * doubleTapZoomAlreadyLegibleRatio;
(...skipping 10 matching lines...) Expand all
1366 } 1385 }
1367 1386
1368 TEST_F(WebFrameTest, DivAutoZoomMultipleDivsTest) 1387 TEST_F(WebFrameTest, DivAutoZoomMultipleDivsTest)
1369 { 1388 {
1370 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html"); 1389 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
1371 1390
1372 const float deviceScaleFactor = 2.0f; 1391 const float deviceScaleFactor = 2.0f;
1373 int viewportWidth = 640 / deviceScaleFactor; 1392 int viewportWidth = 640 / deviceScaleFactor;
1374 int viewportHeight = 1280 / deviceScaleFactor; 1393 int viewportHeight = 1280 / deviceScaleFactor;
1375 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1394 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1376 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_multiple _divs_for_auto_zoom_test.html"); 1395 initializeWebViewAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom_test.h tml");
1377 m_webView->enableFixedLayoutMode(true); 1396 m_webView->enableFixedLayoutMode(true);
1378 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1397 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1379 m_webView->setPageScaleFactorLimits(0.5f, 4); 1398 m_webView->setPageScaleFactorLimits(0.5f, 4);
1380 m_webView->setDeviceScaleFactor(deviceScaleFactor); 1399 m_webView->setDeviceScaleFactor(deviceScaleFactor);
1381 m_webView->setPageScaleFactor(0.5f, WebPoint(0, 0)); 1400 m_webView->setPageScaleFactor(0.5f, WebPoint(0, 0));
1382 m_webView->layout(); 1401 m_webView->layout();
1383 1402
1384 webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1403 webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1385 1404
1386 WebRect topDiv(200, 100, 200, 150); 1405 WebRect topDiv(200, 100, 200, 150);
(...skipping 27 matching lines...) Expand all
1414 EXPECT_FLOAT_EQ(webViewImpl()->minimumPageScaleFactor(), scale); 1433 EXPECT_FLOAT_EQ(webViewImpl()->minimumPageScaleFactor(), scale);
1415 } 1434 }
1416 1435
1417 TEST_F(WebFrameTest, DivAutoZoomScaleBoundsTest) 1436 TEST_F(WebFrameTest, DivAutoZoomScaleBoundsTest)
1418 { 1437 {
1419 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html"); 1438 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html");
1420 1439
1421 int viewportWidth = 320; 1440 int viewportWidth = 320;
1422 int viewportHeight = 480; 1441 int viewportHeight = 480;
1423 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1442 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1424 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_bo unds_check_for_auto_zoom_test.html"); 1443 initializeWebViewAndLoad(m_baseURL + "get_scale_bounds_check_for_auto_zoom_t est.html");
1425 m_webView->enableFixedLayoutMode(true); 1444 m_webView->enableFixedLayoutMode(true);
1426 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1445 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1427 m_webView->setDeviceScaleFactor(1.5f); 1446 m_webView->setDeviceScaleFactor(1.5f);
1428 m_webView->layout(); 1447 m_webView->layout();
1429 1448
1430 webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1449 webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1431 1450
1432 WebRect div(200, 100, 200, 150); 1451 WebRect div(200, 100, 200, 150);
1433 WebPoint doubleTapPoint(div.x + 50, div.y + 50); 1452 WebPoint doubleTapPoint(div.x + 50, div.y + 50);
1434 float scale; 1453 float scale;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 } 1495 }
1477 1496
1478 TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest) 1497 TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
1479 { 1498 {
1480 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html"); 1499 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html");
1481 1500
1482 int viewportWidth = 320; 1501 int viewportWidth = 320;
1483 int viewportHeight = 480; 1502 int viewportHeight = 480;
1484 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1503 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1485 float textAutosizingFontScaleFactor = 1.13f; 1504 float textAutosizingFontScaleFactor = 1.13f;
1486 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_bo unds_check_for_auto_zoom_test.html"); 1505 initializeWebViewAndLoad(m_baseURL + "get_scale_bounds_check_for_auto_zoom_t est.html");
1487 m_webView->enableFixedLayoutMode(true); 1506 m_webView->enableFixedLayoutMode(true);
1488 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1507 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1489 m_webView->layout(); 1508 m_webView->layout();
1490 1509
1491 webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1510 webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1492 webViewImpl()->page()->settings().setTextAutosizingEnabled(true); 1511 webViewImpl()->page()->settings().setTextAutosizingEnabled(true);
1493 webViewImpl()->page()->settings().setTextAutosizingFontScaleFactor(textAutos izingFontScaleFactor); 1512 webViewImpl()->page()->settings().setTextAutosizingFontScaleFactor(textAutos izingFontScaleFactor);
1494 1513
1495 WebRect div(200, 100, 200, 150); 1514 WebRect div(200, 100, 200, 150);
1496 WebPoint doubleTapPoint(div.x + 50, div.y + 50); 1515 WebPoint doubleTapPoint(div.x + 50, div.y + 50);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 } 1573 }
1555 1574
1556 TEST_F(WebFrameTest, DivMultipleTargetZoomMultipleDivsTest) 1575 TEST_F(WebFrameTest, DivMultipleTargetZoomMultipleDivsTest)
1557 { 1576 {
1558 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html"); 1577 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
1559 1578
1560 const float deviceScaleFactor = 2.0f; 1579 const float deviceScaleFactor = 2.0f;
1561 int viewportWidth = 640 / deviceScaleFactor; 1580 int viewportWidth = 640 / deviceScaleFactor;
1562 int viewportHeight = 1280 / deviceScaleFactor; 1581 int viewportHeight = 1280 / deviceScaleFactor;
1563 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1582 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1564 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_multiple _divs_for_auto_zoom_test.html"); 1583 initializeWebViewAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom_test.h tml");
1565 m_webView->enableFixedLayoutMode(true); 1584 m_webView->enableFixedLayoutMode(true);
1566 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1585 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1567 m_webView->setPageScaleFactorLimits(0.5f, 4); 1586 m_webView->setPageScaleFactorLimits(0.5f, 4);
1568 m_webView->setDeviceScaleFactor(deviceScaleFactor); 1587 m_webView->setDeviceScaleFactor(deviceScaleFactor);
1569 m_webView->setPageScaleFactor(0.5f, WebPoint(0, 0)); 1588 m_webView->setPageScaleFactor(0.5f, WebPoint(0, 0));
1570 m_webView->layout(); 1589 m_webView->layout();
1571 1590
1572 webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1591 webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1573 1592
1574 WebRect viewportRect(0, 0, viewportWidth, viewportHeight); 1593 WebRect viewportRect(0, 0, viewportWidth, viewportHeight);
(...skipping 15 matching lines...) Expand all
1590 1609
1591 TEST_F(WebFrameTest, DivScrollIntoEditableTest) 1610 TEST_F(WebFrameTest, DivScrollIntoEditableTest)
1592 { 1611 {
1593 registerMockedHttpURLLoad("get_scale_for_zoom_into_editable_test.html"); 1612 registerMockedHttpURLLoad("get_scale_for_zoom_into_editable_test.html");
1594 1613
1595 int viewportWidth = 450; 1614 int viewportWidth = 450;
1596 int viewportHeight = 300; 1615 int viewportHeight = 300;
1597 float leftBoxRatio = 0.3f; 1616 float leftBoxRatio = 0.3f;
1598 int caretPadding = 10; 1617 int caretPadding = 10;
1599 float minReadableCaretHeight = 18.0f; 1618 float minReadableCaretHeight = 18.0f;
1600 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_fo r_zoom_into_editable_test.html"); 1619 initializeWebViewAndLoad(m_baseURL + "get_scale_for_zoom_into_editable_test. html");
1601 m_webView->enableFixedLayoutMode(true); 1620 m_webView->enableFixedLayoutMode(true);
1602 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 1621 m_webView->resize(WebSize(viewportWidth, viewportHeight));
1603 m_webView->setPageScaleFactorLimits(1, 4); 1622 m_webView->setPageScaleFactorLimits(1, 4);
1604 m_webView->layout(); 1623 m_webView->layout();
1605 m_webView->setDeviceScaleFactor(1.5f); 1624 m_webView->setDeviceScaleFactor(1.5f);
1606 m_webView->settings()->setAutoZoomFocusedNodeToLegibleScale(true); 1625 m_webView->settings()->setAutoZoomFocusedNodeToLegibleScale(true);
1607 1626
1608 webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1627 webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1609 1628
1610 WebRect editBoxWithText(200, 200, 250, 20); 1629 WebRect editBoxWithText(200, 200, 250, 20);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1677 } 1696 }
1678 }; 1697 };
1679 1698
1680 TEST_F(WebFrameTest, ReloadDoesntSetRedirect) 1699 TEST_F(WebFrameTest, ReloadDoesntSetRedirect)
1681 { 1700 {
1682 // Test for case in http://crbug.com/73104. Reloading a frame very quickly 1701 // Test for case in http://crbug.com/73104. Reloading a frame very quickly
1683 // would sometimes call decidePolicyForNavigation with isRedirect=true 1702 // would sometimes call decidePolicyForNavigation with isRedirect=true
1684 registerMockedHttpURLLoad("form.html"); 1703 registerMockedHttpURLLoad("form.html");
1685 1704
1686 TestReloadDoesntRedirectWebFrameClient webFrameClient; 1705 TestReloadDoesntRedirectWebFrameClient webFrameClient;
1687 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "form.html", false, &webFrameClient); 1706 initializeWebViewAndLoad(m_baseURL + "form.html", false, &webFrameClient);
1688 1707
1689 m_webView->mainFrame()->reload(true); 1708 m_webView->mainFrame()->reload(true);
1690 // start reload before request is delivered. 1709 // start reload before request is delivered.
1691 m_webView->mainFrame()->reload(true); 1710 m_webView->mainFrame()->reload(true);
1692 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1711 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1693 1712
1694 m_webView->close(); 1713 m_webView->close();
1695 m_webView = 0; 1714 m_webView = 0;
1696 } 1715 }
1697 1716
1698 TEST_F(WebFrameTest, ReloadWithOverrideURLPreservesState) 1717 TEST_F(WebFrameTest, ReloadWithOverrideURLPreservesState)
1699 { 1718 {
1700 const std::string firstURL = "find.html"; 1719 const std::string firstURL = "find.html";
1701 const std::string secondURL = "form.html"; 1720 const std::string secondURL = "form.html";
1702 const std::string thirdURL = "history.html"; 1721 const std::string thirdURL = "history.html";
1703 const float pageScaleFactor = 1.1684f; 1722 const float pageScaleFactor = 1.1684f;
1704 const int pageWidth = 640; 1723 const int pageWidth = 640;
1705 const int pageHeight = 480; 1724 const int pageHeight = 480;
1706 1725
1707 registerMockedHttpURLLoad(firstURL); 1726 registerMockedHttpURLLoad(firstURL);
1708 registerMockedHttpURLLoad(secondURL); 1727 registerMockedHttpURLLoad(secondURL);
1709 registerMockedHttpURLLoad(thirdURL); 1728 registerMockedHttpURLLoad(thirdURL);
1710 1729
1711 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + firstURL, tru e); 1730 initializeWebViewAndLoad(m_baseURL + firstURL, true);
1712 webViewImpl()->resize(WebSize(pageWidth, pageHeight)); 1731 webViewImpl()->resize(WebSize(pageWidth, pageHeight));
1713 webViewImpl()->mainFrame()->setScrollOffset(WebSize(pageWidth / 4, pageHeigh t / 4)); 1732 webViewImpl()->mainFrame()->setScrollOffset(WebSize(pageWidth / 4, pageHeigh t / 4));
1714 webViewImpl()->setPageScaleFactorPreservingScrollOffset(pageScaleFactor); 1733 webViewImpl()->setPageScaleFactorPreservingScrollOffset(pageScaleFactor);
1715 1734
1716 WebSize previousOffset = webViewImpl()->mainFrame()->scrollOffset(); 1735 WebSize previousOffset = webViewImpl()->mainFrame()->scrollOffset();
1717 float previousScale = webViewImpl()->pageScaleFactor(); 1736 float previousScale = webViewImpl()->pageScaleFactor();
1718 1737
1719 // Reload the page using the cache. 1738 // Reload the page using the cache.
1720 webViewImpl()->mainFrame()->reloadWithOverrideURL(toKURL(m_baseURL + secondU RL), false); 1739 webViewImpl()->mainFrame()->reloadWithOverrideURL(toKURL(m_baseURL + secondU RL), false);
1721 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1740 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
(...skipping 10 matching lines...) Expand all
1732 class TestReloadWhileProvisionalFrameClient : public WebFrameClient { 1751 class TestReloadWhileProvisionalFrameClient : public WebFrameClient {
1733 }; 1752 };
1734 1753
1735 TEST_F(WebFrameTest, ReloadWhileProvisional) 1754 TEST_F(WebFrameTest, ReloadWhileProvisional)
1736 { 1755 {
1737 // Test that reloading while the previous load is still pending does not cau se the initial 1756 // Test that reloading while the previous load is still pending does not cau se the initial
1738 // request to get lost. 1757 // request to get lost.
1739 registerMockedHttpURLLoad("fixed_layout.html"); 1758 registerMockedHttpURLLoad("fixed_layout.html");
1740 1759
1741 TestReloadWhileProvisionalFrameClient webFrameClient; 1760 TestReloadWhileProvisionalFrameClient webFrameClient;
1742 m_webView = FrameTestHelpers::createWebView(false, &webFrameClient); 1761 initializeWebView(false, &webFrameClient);
1743 FrameTestHelpers::loadFrame(m_webView->mainFrame(), m_baseURL + "fixed_layou t.html"); 1762 FrameTestHelpers::loadFrame(m_webView->mainFrame(), m_baseURL + "fixed_layou t.html");
1744 // start reload before first request is delivered. 1763 // start reload before first request is delivered.
1745 m_webView->mainFrame()->reload(true); 1764 m_webView->mainFrame()->reload(true);
1746 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1765 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1747 ASSERT_EQ(WebURL(toKURL(m_baseURL + "fixed_layout.html")), 1766 ASSERT_EQ(WebURL(toKURL(m_baseURL + "fixed_layout.html")),
1748 m_webView->mainFrame()->dataSource()->request().url()); 1767 m_webView->mainFrame()->dataSource()->request().url());
1749 1768
1750 m_webView->close(); 1769 m_webView->close();
1751 m_webView = 0; 1770 m_webView = 0;
1752 } 1771 }
1753 1772
1754 TEST_F(WebFrameTest, IframeRedirect) 1773 TEST_F(WebFrameTest, IframeRedirect)
1755 { 1774 {
1756 registerMockedHttpURLLoad("iframe_redirect.html"); 1775 registerMockedHttpURLLoad("iframe_redirect.html");
1757 registerMockedHttpURLLoad("visible_iframe.html"); 1776 registerMockedHttpURLLoad("visible_iframe.html");
1758 1777
1759 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "iframe_redir ect.html", true); 1778 initializeWebViewAndLoad(m_baseURL + "iframe_redirect.html", true);
1760 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); / / Load the iframe. 1779 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); / / Load the iframe.
1761 1780
1762 WebFrame* iframe = m_webView->findFrameByName(WebString::fromUTF8("ifr")); 1781 WebFrame* iframe = m_webView->findFrameByName(WebString::fromUTF8("ifr"));
1763 ASSERT_TRUE(iframe); 1782 ASSERT_TRUE(iframe);
1764 WebDataSource* iframeDataSource = iframe->dataSource(); 1783 WebDataSource* iframeDataSource = iframe->dataSource();
1765 ASSERT_TRUE(iframeDataSource); 1784 ASSERT_TRUE(iframeDataSource);
1766 WebVector<WebURL> redirects; 1785 WebVector<WebURL> redirects;
1767 iframeDataSource->redirectChain(redirects); 1786 iframeDataSource->redirectChain(redirects);
1768 ASSERT_EQ(2U, redirects.size()); 1787 ASSERT_EQ(2U, redirects.size());
1769 EXPECT_EQ(toKURL("about:blank"), toKURL(redirects[0].spec().data())); 1788 EXPECT_EQ(toKURL("about:blank"), toKURL(redirects[0].spec().data()));
1770 EXPECT_EQ(toKURL("http://www.test.com/visible_iframe.html"), toKURL(redirect s[1].spec().data())); 1789 EXPECT_EQ(toKURL("http://www.test.com/visible_iframe.html"), toKURL(redirect s[1].spec().data()));
1771 } 1790 }
1772 1791
1773 TEST_F(WebFrameTest, ClearFocusedNodeTest) 1792 TEST_F(WebFrameTest, ClearFocusedNodeTest)
1774 { 1793 {
1775 registerMockedHttpURLLoad("iframe_clear_focused_node_test.html"); 1794 registerMockedHttpURLLoad("iframe_clear_focused_node_test.html");
1776 registerMockedHttpURLLoad("autofocus_input_field_iframe.html"); 1795 registerMockedHttpURLLoad("autofocus_input_field_iframe.html");
1777 1796
1778 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "iframe_clear _focused_node_test.html", true); 1797 initializeWebViewAndLoad(m_baseURL + "iframe_clear_focused_node_test.html", true);
1779 1798
1780 // Clear the focused node. 1799 // Clear the focused node.
1781 m_webView->clearFocusedNode(); 1800 m_webView->clearFocusedNode();
1782 1801
1783 // Now retrieve the FocusedNode and test it should be null. 1802 // Now retrieve the FocusedNode and test it should be null.
1784 EXPECT_EQ(0, webViewImpl()->focusedElement()); 1803 EXPECT_EQ(0, webViewImpl()->focusedElement());
1785 } 1804 }
1786 1805
1787 // Implementation of WebFrameClient that tracks the v8 contexts that are created 1806 // Implementation of WebFrameClient that tracks the v8 contexts that are created
1788 // and destroyed for verification. 1807 // and destroyed for verification.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1847 // TODO(aa): Deflake this test. 1866 // TODO(aa): Deflake this test.
1848 TEST_F(WebFrameTest, FLAKY_ContextNotificationsLoadUnload) 1867 TEST_F(WebFrameTest, FLAKY_ContextNotificationsLoadUnload)
1849 { 1868 {
1850 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 1869 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
1851 1870
1852 registerMockedHttpURLLoad("context_notifications_test.html"); 1871 registerMockedHttpURLLoad("context_notifications_test.html");
1853 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 1872 registerMockedHttpURLLoad("context_notifications_test_frame.html");
1854 1873
1855 // Load a frame with an iframe, make sure we get the right create notificati ons. 1874 // Load a frame with an iframe, make sure we get the right create notificati ons.
1856 ContextLifetimeTestWebFrameClient webFrameClient; 1875 ContextLifetimeTestWebFrameClient webFrameClient;
1857 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "context_noti fications_test.html", true, &webFrameClient); 1876 initializeWebViewAndLoad(m_baseURL + "context_notifications_test.html", true , &webFrameClient);
1858 1877
1859 WebFrame* mainFrame = m_webView->mainFrame(); 1878 WebFrame* mainFrame = m_webView->mainFrame();
1860 WebFrame* childFrame = mainFrame->firstChild(); 1879 WebFrame* childFrame = mainFrame->firstChild();
1861 1880
1862 ASSERT_EQ(2u, webFrameClient.createNotifications.size()); 1881 ASSERT_EQ(2u, webFrameClient.createNotifications.size());
1863 EXPECT_EQ(0u, webFrameClient.releaseNotifications.size()); 1882 EXPECT_EQ(0u, webFrameClient.releaseNotifications.size());
1864 1883
1865 ContextLifetimeTestWebFrameClient::Notification* firstCreateNotification = w ebFrameClient.createNotifications[0]; 1884 ContextLifetimeTestWebFrameClient::Notification* firstCreateNotification = w ebFrameClient.createNotifications[0];
1866 ContextLifetimeTestWebFrameClient::Notification* secondCreateNotification = webFrameClient.createNotifications[1]; 1885 ContextLifetimeTestWebFrameClient::Notification* secondCreateNotification = webFrameClient.createNotifications[1];
1867 1886
(...skipping 18 matching lines...) Expand all
1886 } 1905 }
1887 1906
1888 TEST_F(WebFrameTest, ContextNotificationsReload) 1907 TEST_F(WebFrameTest, ContextNotificationsReload)
1889 { 1908 {
1890 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 1909 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
1891 1910
1892 registerMockedHttpURLLoad("context_notifications_test.html"); 1911 registerMockedHttpURLLoad("context_notifications_test.html");
1893 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 1912 registerMockedHttpURLLoad("context_notifications_test_frame.html");
1894 1913
1895 ContextLifetimeTestWebFrameClient webFrameClient; 1914 ContextLifetimeTestWebFrameClient webFrameClient;
1896 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "context_noti fications_test.html", true, &webFrameClient); 1915 initializeWebViewAndLoad(m_baseURL + "context_notifications_test.html", true , &webFrameClient);
1897 1916
1898 // Refresh, we should get two release notifications and two more create noti fications. 1917 // Refresh, we should get two release notifications and two more create noti fications.
1899 m_webView->mainFrame()->reload(false); 1918 m_webView->mainFrame()->reload(false);
1900 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1919 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1901 ASSERT_EQ(4u, webFrameClient.createNotifications.size()); 1920 ASSERT_EQ(4u, webFrameClient.createNotifications.size());
1902 ASSERT_EQ(2u, webFrameClient.releaseNotifications.size()); 1921 ASSERT_EQ(2u, webFrameClient.releaseNotifications.size());
1903 1922
1904 // The two release notifications we got should be exactly the same as the fi rst two create notifications. 1923 // The two release notifications we got should be exactly the same as the fi rst two create notifications.
1905 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) { 1924 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) {
1906 EXPECT_TRUE(webFrameClient.releaseNotifications[i]->Equals( 1925 EXPECT_TRUE(webFrameClient.releaseNotifications[i]->Equals(
(...skipping 20 matching lines...) Expand all
1927 1946
1928 TEST_F(WebFrameTest, ContextNotificationsIsolatedWorlds) 1947 TEST_F(WebFrameTest, ContextNotificationsIsolatedWorlds)
1929 { 1948 {
1930 v8::Isolate* isolate = v8::Isolate::GetCurrent(); 1949 v8::Isolate* isolate = v8::Isolate::GetCurrent();
1931 v8::HandleScope handleScope(isolate); 1950 v8::HandleScope handleScope(isolate);
1932 1951
1933 registerMockedHttpURLLoad("context_notifications_test.html"); 1952 registerMockedHttpURLLoad("context_notifications_test.html");
1934 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 1953 registerMockedHttpURLLoad("context_notifications_test_frame.html");
1935 1954
1936 ContextLifetimeTestWebFrameClient webFrameClient; 1955 ContextLifetimeTestWebFrameClient webFrameClient;
1937 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "context_noti fications_test.html", true, &webFrameClient); 1956 initializeWebViewAndLoad(m_baseURL + "context_notifications_test.html", true , &webFrameClient);
1938 1957
1939 // Add an isolated world. 1958 // Add an isolated world.
1940 webFrameClient.reset(); 1959 webFrameClient.reset();
1941 1960
1942 int isolatedWorldId = 42; 1961 int isolatedWorldId = 42;
1943 WebScriptSource scriptSource("hi!"); 1962 WebScriptSource scriptSource("hi!");
1944 int numSources = 1; 1963 int numSources = 1;
1945 int extensionGroup = 0; 1964 int extensionGroup = 0;
1946 m_webView->mainFrame()->executeScriptInIsolatedWorld(isolatedWorldId, &scrip tSource, numSources, extensionGroup); 1965 m_webView->mainFrame()->executeScriptInIsolatedWorld(isolatedWorldId, &scrip tSource, numSources, extensionGroup);
1947 1966
(...skipping 17 matching lines...) Expand all
1965 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) { 1984 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) {
1966 if (webFrameClient.releaseNotifications[i]->Equals(webFrameClient.createNo tifications[0])) 1985 if (webFrameClient.releaseNotifications[i]->Equals(webFrameClient.createNo tifications[0]))
1967 ++matchCount; 1986 ++matchCount;
1968 } 1987 }
1969 EXPECT_EQ(1, matchCount); 1988 EXPECT_EQ(1, matchCount);
1970 } 1989 }
1971 1990
1972 TEST_F(WebFrameTest, FindInPage) 1991 TEST_F(WebFrameTest, FindInPage)
1973 { 1992 {
1974 registerMockedHttpURLLoad("find.html"); 1993 registerMockedHttpURLLoad("find.html");
1975 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "find.html"); 1994 initializeWebViewAndLoad(m_baseURL + "find.html");
1976 WebFrame* frame = m_webView->mainFrame(); 1995 WebFrame* frame = m_webView->mainFrame();
1977 const int findIdentifier = 12345; 1996 const int findIdentifier = 12345;
1978 WebFindOptions options; 1997 WebFindOptions options;
1979 1998
1980 // Find in a <div> element. 1999 // Find in a <div> element.
1981 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false, 0)); 2000 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false, 0));
1982 frame->stopFinding(false); 2001 frame->stopFinding(false);
1983 WebRange range = frame->selectionRange(); 2002 WebRange range = frame->selectionRange();
1984 EXPECT_EQ(5, range.startOffset()); 2003 EXPECT_EQ(5, range.startOffset());
1985 EXPECT_EQ(9, range.endOffset()); 2004 EXPECT_EQ(9, range.endOffset());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false, 0)); 2039 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false, 0));
2021 // If there are any matches, stopFinding will set the selection on the found text. 2040 // If there are any matches, stopFinding will set the selection on the found text.
2022 // However, we do not expect any matches, so check that the selection is nul l. 2041 // However, we do not expect any matches, so check that the selection is nul l.
2023 frame->stopFinding(false); 2042 frame->stopFinding(false);
2024 range = frame->selectionRange(); 2043 range = frame->selectionRange();
2025 ASSERT_TRUE(range.isNull()); 2044 ASSERT_TRUE(range.isNull());
2026 } 2045 }
2027 2046
2028 TEST_F(WebFrameTest, GetContentAsPlainText) 2047 TEST_F(WebFrameTest, GetContentAsPlainText)
2029 { 2048 {
2030 m_webView = FrameTestHelpers::createWebViewAndLoad("about:blank", true); 2049 initializeWebViewAndLoad("about:blank", true);
2031 // We set the size because it impacts line wrapping, which changes the 2050 // We set the size because it impacts line wrapping, which changes the
2032 // resulting text value. 2051 // resulting text value.
2033 m_webView->resize(WebSize(640, 480)); 2052 m_webView->resize(WebSize(640, 480));
2034 WebFrame* frame = m_webView->mainFrame(); 2053 WebFrame* frame = m_webView->mainFrame();
2035 2054
2036 // Generate a simple test case. 2055 // Generate a simple test case.
2037 const char simpleSource[] = "<div>Foo bar</div><div></div>baz"; 2056 const char simpleSource[] = "<div>Foo bar</div><div></div>baz";
2038 WebCore::KURL testURL = toKURL("about:blank"); 2057 WebCore::KURL testURL = toKURL("about:blank");
2039 frame->loadHTMLString(simpleSource, testURL); 2058 frame->loadHTMLString(simpleSource, testURL);
2040 runPendingTasks(); 2059 runPendingTasks();
(...skipping 23 matching lines...) Expand all
2064 EXPECT_EQ("Hello world\n\nsub\ntext", std::string(text.utf8().data())); 2083 EXPECT_EQ("Hello world\n\nsub\ntext", std::string(text.utf8().data()));
2065 2084
2066 // Get the frame text where the subframe separator falls on the boundary of 2085 // Get the frame text where the subframe separator falls on the boundary of
2067 // what we'll take. There used to be a crash in this case. 2086 // what we'll take. There used to be a crash in this case.
2068 text = frame->contentAsText(12); 2087 text = frame->contentAsText(12);
2069 EXPECT_EQ("Hello world", std::string(text.utf8().data())); 2088 EXPECT_EQ("Hello world", std::string(text.utf8().data()));
2070 } 2089 }
2071 2090
2072 TEST_F(WebFrameTest, GetFullHtmlOfPage) 2091 TEST_F(WebFrameTest, GetFullHtmlOfPage)
2073 { 2092 {
2074 m_webView = FrameTestHelpers::createWebViewAndLoad("about:blank", true); 2093 initializeWebViewAndLoad("about:blank", true);
2075 WebFrame* frame = m_webView->mainFrame(); 2094 WebFrame* frame = m_webView->mainFrame();
2076 2095
2077 // Generate a simple test case. 2096 // Generate a simple test case.
2078 const char simpleSource[] = "<p>Hello</p><p>World</p>"; 2097 const char simpleSource[] = "<p>Hello</p><p>World</p>";
2079 WebCore::KURL testURL = toKURL("about:blank"); 2098 WebCore::KURL testURL = toKURL("about:blank");
2080 frame->loadHTMLString(simpleSource, testURL); 2099 frame->loadHTMLString(simpleSource, testURL);
2081 runPendingTasks(); 2100 runPendingTasks();
2082 2101
2083 WebString text = frame->contentAsText(std::numeric_limits<size_t>::max()); 2102 WebString text = frame->contentAsText(std::numeric_limits<size_t>::max());
2084 EXPECT_EQ("Hello\n\nWorld", std::string(text.utf8().data())); 2103 EXPECT_EQ("Hello\n\nWorld", std::string(text.utf8().data()));
(...skipping 25 matching lines...) Expand all
2110 { 2129 {
2111 frame->executeScript(WebScriptSource("window.history = 'replaced';")); 2130 frame->executeScript(WebScriptSource("window.history = 'replaced';"));
2112 } 2131 }
2113 }; 2132 };
2114 2133
2115 TEST_F(WebFrameTest, ExecuteScriptDuringDidCreateScriptContext) 2134 TEST_F(WebFrameTest, ExecuteScriptDuringDidCreateScriptContext)
2116 { 2135 {
2117 registerMockedHttpURLLoad("hello_world.html"); 2136 registerMockedHttpURLLoad("hello_world.html");
2118 2137
2119 TestExecuteScriptDuringDidCreateScriptContext webFrameClient; 2138 TestExecuteScriptDuringDidCreateScriptContext webFrameClient;
2120 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "hello_world. html", true, &webFrameClient); 2139 initializeWebViewAndLoad(m_baseURL + "hello_world.html", true, &webFrameClie nt);
2121 2140
2122 m_webView->mainFrame()->reload(); 2141 m_webView->mainFrame()->reload();
2123 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 2142 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
2124 2143
2125 m_webView->close(); 2144 m_webView->close();
2126 m_webView = 0; 2145 m_webView = 0;
2127 } 2146 }
2128 2147
2129 class TestDidCreateFrameWebFrameClient : public WebFrameClient { 2148 class TestDidCreateFrameWebFrameClient : public WebFrameClient {
2130 public: 2149 public:
2131 TestDidCreateFrameWebFrameClient() : m_frameCount(0), m_parent(0) 2150 TestDidCreateFrameWebFrameClient() : m_frameCount(0), m_parent(0)
2132 { 2151 {
2133 } 2152 }
2134 2153
2135 virtual void didCreateFrame(WebFrame* parent, WebFrame* child) 2154 virtual WebFrame* didCreateFrame(WebString name)
2136 { 2155 {
2137 m_frameCount++; 2156 m_frameCount++;
2157 /*
2138 if (!m_parent) 2158 if (!m_parent)
2139 m_parent = parent; 2159 m_parent = parent;
2160 */
2161 return 0;
2140 } 2162 }
2141 2163
2142 int m_frameCount; 2164 int m_frameCount;
2143 WebFrame* m_parent; 2165 WebFrame* m_parent;
2144 }; 2166 };
2145 2167
2146 TEST_F(WebFrameTest, DidCreateFrame) 2168 TEST_F(WebFrameTest, DidCreateFrame)
2147 { 2169 {
2148 registerMockedHttpURLLoad("iframes_test.html"); 2170 registerMockedHttpURLLoad("iframes_test.html");
2149 registerMockedHttpURLLoad("visible_iframe.html"); 2171 registerMockedHttpURLLoad("visible_iframe.html");
2150 registerMockedHttpURLLoad("invisible_iframe.html"); 2172 registerMockedHttpURLLoad("invisible_iframe.html");
2151 registerMockedHttpURLLoad("zero_sized_iframe.html"); 2173 registerMockedHttpURLLoad("zero_sized_iframe.html");
2152 2174
2153 TestDidCreateFrameWebFrameClient webFrameClient; 2175 TestDidCreateFrameWebFrameClient webFrameClient;
2154 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "iframes_test .html", false, &webFrameClient); 2176 initializeWebViewAndLoad(m_baseURL + "iframes_test.html", false, &webFrameCl ient);
2155 2177
2156 EXPECT_EQ(webFrameClient.m_frameCount, 3); 2178 EXPECT_EQ(webFrameClient.m_frameCount, 3);
2157 EXPECT_EQ(webFrameClient.m_parent, m_webView->mainFrame()); 2179 EXPECT_EQ(webFrameClient.m_parent, m_webView->mainFrame());
2158 2180
2159 m_webView->close(); 2181 m_webView->close();
2160 m_webView = 0; 2182 m_webView = 0;
2161 } 2183 }
2162 2184
2163 class FindUpdateWebFrameClient : public WebFrameClient { 2185 class FindUpdateWebFrameClient : public WebFrameClient {
2164 public: 2186 public:
(...skipping 22 matching lines...) Expand all
2187 #if OS(MACOSX) 2209 #if OS(MACOSX)
2188 TEST_F(WebFrameTest, DISABLED_FindInPageMatchRects) 2210 TEST_F(WebFrameTest, DISABLED_FindInPageMatchRects)
2189 #else 2211 #else
2190 TEST_F(WebFrameTest, FindInPageMatchRects) 2212 TEST_F(WebFrameTest, FindInPageMatchRects)
2191 #endif 2213 #endif
2192 { 2214 {
2193 registerMockedHttpURLLoad("find_in_page.html"); 2215 registerMockedHttpURLLoad("find_in_page.html");
2194 registerMockedHttpURLLoad("find_in_page_frame.html"); 2216 registerMockedHttpURLLoad("find_in_page_frame.html");
2195 2217
2196 FindUpdateWebFrameClient client; 2218 FindUpdateWebFrameClient client;
2197 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "find_in_page .html", true, &client); 2219 initializeWebViewAndLoad(m_baseURL + "find_in_page.html", true, &client);
2198 m_webView->resize(WebSize(640, 480)); 2220 m_webView->resize(WebSize(640, 480));
2199 m_webView->layout(); 2221 m_webView->layout();
2200 runPendingTasks(); 2222 runPendingTasks();
2201 2223
2202 // Note that the 'result 19' in the <select> element is not expected to prod uce a match. 2224 // Note that the 'result 19' in the <select> element is not expected to prod uce a match.
2203 static const char* kFindString = "result"; 2225 static const char* kFindString = "result";
2204 static const int kFindIdentifier = 12345; 2226 static const int kFindIdentifier = 12345;
2205 static const int kNumResults = 19; 2227 static const int kNumResults = 19;
2206 2228
2207 WebFindOptions options; 2229 WebFindOptions options;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
2307 2329
2308 m_webView->close(); 2330 m_webView->close();
2309 m_webView = 0; 2331 m_webView = 0;
2310 } 2332 }
2311 2333
2312 TEST_F(WebFrameTest, FindInPageSkipsHiddenFrames) 2334 TEST_F(WebFrameTest, FindInPageSkipsHiddenFrames)
2313 { 2335 {
2314 registerMockedHttpURLLoad("find_in_hidden_frame.html"); 2336 registerMockedHttpURLLoad("find_in_hidden_frame.html");
2315 2337
2316 FindUpdateWebFrameClient client; 2338 FindUpdateWebFrameClient client;
2317 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "find_in_hidd en_frame.html", true, &client); 2339 initializeWebViewAndLoad(m_baseURL + "find_in_hidden_frame.html", true, &cli ent);
2318 m_webView->resize(WebSize(640, 480)); 2340 m_webView->resize(WebSize(640, 480));
2319 m_webView->layout(); 2341 m_webView->layout();
2320 runPendingTasks(); 2342 runPendingTasks();
2321 2343
2322 static const char* kFindString = "hello"; 2344 static const char* kFindString = "hello";
2323 static const int kFindIdentifier = 12345; 2345 static const int kFindIdentifier = 12345;
2324 static const int kNumResults = 1; 2346 static const int kNumResults = 1;
2325 2347
2326 WebFindOptions options; 2348 WebFindOptions options;
2327 WebString searchText = WebString::fromUTF8(kFindString); 2349 WebString searchText = WebString::fromUTF8(kFindString);
(...skipping 12 matching lines...) Expand all
2340 m_webView->close(); 2362 m_webView->close();
2341 m_webView = 0; 2363 m_webView = 0;
2342 } 2364 }
2343 2365
2344 TEST_F(WebFrameTest, FindOnDetachedFrame) 2366 TEST_F(WebFrameTest, FindOnDetachedFrame)
2345 { 2367 {
2346 registerMockedHttpURLLoad("find_in_page.html"); 2368 registerMockedHttpURLLoad("find_in_page.html");
2347 registerMockedHttpURLLoad("find_in_page_frame.html"); 2369 registerMockedHttpURLLoad("find_in_page_frame.html");
2348 2370
2349 FindUpdateWebFrameClient client; 2371 FindUpdateWebFrameClient client;
2350 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "find_in_page .html", true, &client); 2372 initializeWebViewAndLoad(m_baseURL + "find_in_page.html", true, &client);
2351 m_webView->resize(WebSize(640, 480)); 2373 m_webView->resize(WebSize(640, 480));
2352 m_webView->layout(); 2374 m_webView->layout();
2353 runPendingTasks(); 2375 runPendingTasks();
2354 2376
2355 static const char* kFindString = "result"; 2377 static const char* kFindString = "result";
2356 static const int kFindIdentifier = 12345; 2378 static const int kFindIdentifier = 12345;
2357 2379
2358 WebFindOptions options; 2380 WebFindOptions options;
2359 WebString searchText = WebString::fromUTF8(kFindString); 2381 WebString searchText = WebString::fromUTF8(kFindString);
2360 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame()); 2382 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame());
(...skipping 22 matching lines...) Expand all
2383 m_webView->close(); 2405 m_webView->close();
2384 m_webView = 0; 2406 m_webView = 0;
2385 } 2407 }
2386 2408
2387 TEST_F(WebFrameTest, FindDetachFrameBeforeScopeStrings) 2409 TEST_F(WebFrameTest, FindDetachFrameBeforeScopeStrings)
2388 { 2410 {
2389 registerMockedHttpURLLoad("find_in_page.html"); 2411 registerMockedHttpURLLoad("find_in_page.html");
2390 registerMockedHttpURLLoad("find_in_page_frame.html"); 2412 registerMockedHttpURLLoad("find_in_page_frame.html");
2391 2413
2392 FindUpdateWebFrameClient client; 2414 FindUpdateWebFrameClient client;
2393 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "find_in_page .html", true, &client); 2415 initializeWebViewAndLoad(m_baseURL + "find_in_page.html", true, &client);
2394 m_webView->resize(WebSize(640, 480)); 2416 m_webView->resize(WebSize(640, 480));
2395 m_webView->layout(); 2417 m_webView->layout();
2396 runPendingTasks(); 2418 runPendingTasks();
2397 2419
2398 static const char* kFindString = "result"; 2420 static const char* kFindString = "result";
2399 static const int kFindIdentifier = 12345; 2421 static const int kFindIdentifier = 12345;
2400 2422
2401 WebFindOptions options; 2423 WebFindOptions options;
2402 WebString searchText = WebString::fromUTF8(kFindString); 2424 WebString searchText = WebString::fromUTF8(kFindString);
2403 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame()); 2425 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame());
(...skipping 22 matching lines...) Expand all
2426 m_webView->close(); 2448 m_webView->close();
2427 m_webView = 0; 2449 m_webView = 0;
2428 } 2450 }
2429 2451
2430 TEST_F(WebFrameTest, FindDetachFrameWhileScopingStrings) 2452 TEST_F(WebFrameTest, FindDetachFrameWhileScopingStrings)
2431 { 2453 {
2432 registerMockedHttpURLLoad("find_in_page.html"); 2454 registerMockedHttpURLLoad("find_in_page.html");
2433 registerMockedHttpURLLoad("find_in_page_frame.html"); 2455 registerMockedHttpURLLoad("find_in_page_frame.html");
2434 2456
2435 FindUpdateWebFrameClient client; 2457 FindUpdateWebFrameClient client;
2436 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "find_in_page .html", true, &client); 2458 initializeWebViewAndLoad(m_baseURL + "find_in_page.html", true, &client);
2437 m_webView->resize(WebSize(640, 480)); 2459 m_webView->resize(WebSize(640, 480));
2438 m_webView->layout(); 2460 m_webView->layout();
2439 runPendingTasks(); 2461 runPendingTasks();
2440 2462
2441 static const char* kFindString = "result"; 2463 static const char* kFindString = "result";
2442 static const int kFindIdentifier = 12345; 2464 static const int kFindIdentifier = 12345;
2443 2465
2444 WebFindOptions options; 2466 WebFindOptions options;
2445 WebString searchText = WebString::fromUTF8(kFindString); 2467 WebString searchText = WebString::fromUTF8(kFindString);
2446 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame()); 2468 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame());
(...skipping 18 matching lines...) Expand all
2465 EXPECT_TRUE(client.findResultsAreReady()); 2487 EXPECT_TRUE(client.findResultsAreReady());
2466 2488
2467 holdSecondFrame.release(); 2489 holdSecondFrame.release();
2468 2490
2469 m_webView->close(); 2491 m_webView->close();
2470 m_webView = 0; 2492 m_webView = 0;
2471 } 2493 }
2472 2494
2473 static WebView* createWebViewForTextSelection(const std::string& url) 2495 static WebView* createWebViewForTextSelection(const std::string& url)
2474 { 2496 {
2475 WebView* webView = FrameTestHelpers::createWebViewAndLoad(url, true); 2497 WebView* webView = createWebViewAndLoad(url, true);
2476 webView->settings()->setDefaultFontSize(12); 2498 webView->settings()->setDefaultFontSize(12);
2477 webView->enableFixedLayoutMode(false); 2499 webView->enableFixedLayoutMode(false);
2478 webView->resize(WebSize(640, 480)); 2500 webView->resize(WebSize(640, 480));
2479 return webView; 2501 return webView;
2480 } 2502 }
2481 2503
2482 static WebPoint topLeft(const WebRect& rect) 2504 static WebPoint topLeft(const WebRect& rect)
2483 { 2505 {
2484 return WebPoint(rect.x, rect.y); 2506 return WebPoint(rect.x, rect.y);
2485 } 2507 }
(...skipping 19 matching lines...) Expand all
2505 2527
2506 TEST_F(WebFrameTest, SelectRange) 2528 TEST_F(WebFrameTest, SelectRange)
2507 { 2529 {
2508 WebFrame* frame; 2530 WebFrame* frame;
2509 WebRect startWebRect; 2531 WebRect startWebRect;
2510 WebRect endWebRect; 2532 WebRect endWebRect;
2511 2533
2512 registerMockedHttpURLLoad("select_range_basic.html"); 2534 registerMockedHttpURLLoad("select_range_basic.html");
2513 registerMockedHttpURLLoad("select_range_scroll.html"); 2535 registerMockedHttpURLLoad("select_range_scroll.html");
2514 2536
2515 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_basic.ht ml"); 2537 initializeWebViewForTextSelection(m_baseURL + "select_range_basic.html");
2516 frame = m_webView->mainFrame(); 2538 frame = m_webView->mainFrame();
2517 EXPECT_EQ("Some test text for testing.", selectionAsString(frame)); 2539 EXPECT_EQ("Some test text for testing.", selectionAsString(frame));
2518 m_webView->selectionBounds(startWebRect, endWebRect); 2540 m_webView->selectionBounds(startWebRect, endWebRect);
2519 frame->executeCommand(WebString::fromUTF8("Unselect")); 2541 frame->executeCommand(WebString::fromUTF8("Unselect"));
2520 EXPECT_EQ("", selectionAsString(frame)); 2542 EXPECT_EQ("", selectionAsString(frame));
2521 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 2543 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
2522 EXPECT_EQ("Some test text for testing.", selectionAsString(frame)); 2544 EXPECT_EQ("Some test text for testing.", selectionAsString(frame));
2523 m_webView->close(); 2545 m_webView->close();
2524 m_webView = 0; 2546 m_webView = 0;
2525 2547
2526 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_scroll.h tml"); 2548 initializeWebViewForTextSelection(m_baseURL + "select_range_scroll.html");
2527 frame = m_webView->mainFrame(); 2549 frame = m_webView->mainFrame();
2528 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ; 2550 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ;
2529 m_webView->selectionBounds(startWebRect, endWebRect); 2551 m_webView->selectionBounds(startWebRect, endWebRect);
2530 frame->executeCommand(WebString::fromUTF8("Unselect")); 2552 frame->executeCommand(WebString::fromUTF8("Unselect"));
2531 EXPECT_EQ("", selectionAsString(frame)); 2553 EXPECT_EQ("", selectionAsString(frame));
2532 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 2554 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
2533 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ; 2555 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ;
2534 m_webView->close(); 2556 m_webView->close();
2535 m_webView = 0; 2557 m_webView = 0;
2536 } 2558 }
2537 2559
2538 TEST_F(WebFrameTest, SelectRangeInIframe) 2560 TEST_F(WebFrameTest, SelectRangeInIframe)
2539 { 2561 {
2540 WebFrame* frame; 2562 WebFrame* frame;
2541 WebRect startWebRect; 2563 WebRect startWebRect;
2542 WebRect endWebRect; 2564 WebRect endWebRect;
2543 2565
2544 registerMockedHttpURLLoad("select_range_iframe.html"); 2566 registerMockedHttpURLLoad("select_range_iframe.html");
2545 registerMockedHttpURLLoad("select_range_basic.html"); 2567 registerMockedHttpURLLoad("select_range_basic.html");
2546 2568
2547 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_iframe.h tml"); 2569 initializeWebViewForTextSelection(m_baseURL + "select_range_iframe.html");
2548 frame = m_webView->mainFrame(); 2570 frame = m_webView->mainFrame();
2549 WebFrame* subframe = frame->findChildByExpression(WebString::fromUTF8("/html /body/iframe")); 2571 WebFrame* subframe = frame->findChildByExpression(WebString::fromUTF8("/html /body/iframe"));
2550 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe)); 2572 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe));
2551 m_webView->selectionBounds(startWebRect, endWebRect); 2573 m_webView->selectionBounds(startWebRect, endWebRect);
2552 subframe->executeCommand(WebString::fromUTF8("Unselect")); 2574 subframe->executeCommand(WebString::fromUTF8("Unselect"));
2553 EXPECT_EQ("", selectionAsString(subframe)); 2575 EXPECT_EQ("", selectionAsString(subframe));
2554 subframe->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect) ); 2576 subframe->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect) );
2555 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe)); 2577 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe));
2556 m_webView->close(); 2578 m_webView->close();
2557 m_webView = 0; 2579 m_webView = 0;
2558 } 2580 }
2559 2581
2560 TEST_F(WebFrameTest, SelectRangeDivContentEditable) 2582 TEST_F(WebFrameTest, SelectRangeDivContentEditable)
2561 { 2583 {
2562 WebFrame* frame; 2584 WebFrame* frame;
2563 WebRect startWebRect; 2585 WebRect startWebRect;
2564 WebRect endWebRect; 2586 WebRect endWebRect;
2565 2587
2566 registerMockedHttpURLLoad("select_range_div_editable.html"); 2588 registerMockedHttpURLLoad("select_range_div_editable.html");
2567 2589
2568 // Select the middle of an editable element, then try to extend the selectio n to the top of the document. 2590 // Select the middle of an editable element, then try to extend the selectio n to the top of the document.
2569 // The selection range should be clipped to the bounds of the editable eleme nt. 2591 // The selection range should be clipped to the bounds of the editable eleme nt.
2570 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_div_edit able.html"); 2592 initializeWebViewForTextSelection(m_baseURL + "select_range_div_editable.htm l");
2571 frame = m_webView->mainFrame(); 2593 frame = m_webView->mainFrame();
2572 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 2594 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
2573 m_webView->selectionBounds(startWebRect, endWebRect); 2595 m_webView->selectionBounds(startWebRect, endWebRect);
2574 2596
2575 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0)); 2597 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0));
2576 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame)); 2598 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame));
2577 m_webView->close(); 2599 m_webView->close();
2578 m_webView = 0; 2600 m_webView = 0;
2579 2601
2580 // As above, but extending the selection to the bottom of the document. 2602 // As above, but extending the selection to the bottom of the document.
2581 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_div_edit able.html"); 2603 initializeWebViewForTextSelection(m_baseURL + "select_range_div_editable.htm l");
2582 frame = m_webView->mainFrame(); 2604 frame = m_webView->mainFrame();
2583 2605
2584 m_webView->selectionBounds(startWebRect, endWebRect); 2606 m_webView->selectionBounds(startWebRect, endWebRect);
2585 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 2607 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
2586 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 2608 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
2587 m_webView->selectionBounds(startWebRect, endWebRect); 2609 m_webView->selectionBounds(startWebRect, endWebRect);
2588 2610
2589 m_webView->selectionBounds(startWebRect, endWebRect); 2611 m_webView->selectionBounds(startWebRect, endWebRect);
2590 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480)); 2612 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480));
2591 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame)); 2613 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame));
2592 m_webView->close(); 2614 m_webView->close();
2593 m_webView = 0; 2615 m_webView = 0;
2594 } 2616 }
2595 2617
2596 // positionForPoint returns the wrong values for contenteditable spans. See 2618 // positionForPoint returns the wrong values for contenteditable spans. See
2597 // http://crbug.com/238334. 2619 // http://crbug.com/238334.
2598 TEST_F(WebFrameTest, DISABLED_SelectRangeSpanContentEditable) 2620 TEST_F(WebFrameTest, DISABLED_SelectRangeSpanContentEditable)
2599 { 2621 {
2600 WebFrame* frame; 2622 WebFrame* frame;
2601 WebRect startWebRect; 2623 WebRect startWebRect;
2602 WebRect endWebRect; 2624 WebRect endWebRect;
2603 2625
2604 registerMockedHttpURLLoad("select_range_span_editable.html"); 2626 registerMockedHttpURLLoad("select_range_span_editable.html");
2605 2627
2606 // Select the middle of an editable element, then try to extend the selectio n to the top of the document. 2628 // Select the middle of an editable element, then try to extend the selectio n to the top of the document.
2607 // The selection range should be clipped to the bounds of the editable eleme nt. 2629 // The selection range should be clipped to the bounds of the editable eleme nt.
2608 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_span_edi table.html"); 2630 initializeWebViewForTextSelection(m_baseURL + "select_range_span_editable.ht ml");
2609 frame = m_webView->mainFrame(); 2631 frame = m_webView->mainFrame();
2610 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 2632 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
2611 m_webView->selectionBounds(startWebRect, endWebRect); 2633 m_webView->selectionBounds(startWebRect, endWebRect);
2612 2634
2613 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0)); 2635 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0));
2614 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame)); 2636 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame));
2615 m_webView->close(); 2637 m_webView->close();
2616 m_webView = 0; 2638 m_webView = 0;
2617 2639
2618 // As above, but extending the selection to the bottom of the document. 2640 // As above, but extending the selection to the bottom of the document.
2619 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_span_edi table.html"); 2641 initializeWebViewForTextSelection(m_baseURL + "select_range_span_editable.ht ml");
2620 frame = m_webView->mainFrame(); 2642 frame = m_webView->mainFrame();
2621 2643
2622 m_webView->selectionBounds(startWebRect, endWebRect); 2644 m_webView->selectionBounds(startWebRect, endWebRect);
2623 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 2645 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
2624 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 2646 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
2625 m_webView->selectionBounds(startWebRect, endWebRect); 2647 m_webView->selectionBounds(startWebRect, endWebRect);
2626 2648
2627 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 2649 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
2628 m_webView->selectionBounds(startWebRect, endWebRect); 2650 m_webView->selectionBounds(startWebRect, endWebRect);
2629 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480)); 2651 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480));
2630 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame)); 2652 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame));
2631 m_webView->close(); 2653 m_webView->close();
2632 m_webView = 0; 2654 m_webView = 0;
2633 } 2655 }
2634 2656
2635 TEST_F(WebFrameTest, SelectRangeCanMoveSelectionStart) 2657 TEST_F(WebFrameTest, SelectRangeCanMoveSelectionStart)
2636 { 2658 {
2637 registerMockedHttpURLLoad("text_selection.html"); 2659 registerMockedHttpURLLoad("text_selection.html");
2638 m_webView = createWebViewForTextSelection(m_baseURL + "text_selection.html") ; 2660 initializeWebViewForTextSelection(m_baseURL + "text_selection.html");
2639 WebFrame* frame = m_webView->mainFrame(); 2661 WebFrame* frame = m_webView->mainFrame();
2640 2662
2641 // Select second span. We can move the start to include the first span. 2663 // Select second span. We can move the start to include the first span.
2642 frame->executeScript(WebScriptSource("selectElement('header_2');")); 2664 frame->executeScript(WebScriptSource("selectElement('header_2');"));
2643 EXPECT_EQ("Header 2.", selectionAsString(frame)); 2665 EXPECT_EQ("Header 2.", selectionAsString(frame));
2644 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "header_2")), to pLeft(elementBounds(frame, "header_1"))); 2666 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "header_2")), to pLeft(elementBounds(frame, "header_1")));
2645 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame)); 2667 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame));
2646 2668
2647 // We can move the start and end together. 2669 // We can move the start and end together.
2648 frame->executeScript(WebScriptSource("selectElement('header_1');")); 2670 frame->executeScript(WebScriptSource("selectElement('header_1');"));
(...skipping 26 matching lines...) Expand all
2675 EXPECT_EQ("Editable 2.", selectionAsString(frame)); 2697 EXPECT_EQ("Editable 2.", selectionAsString(frame));
2676 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "editable_2")), topLeft(elementBounds(frame, "header_2"))); 2698 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "editable_2")), topLeft(elementBounds(frame, "header_2")));
2677 // positionForPoint returns the wrong values for contenteditable spans. See 2699 // positionForPoint returns the wrong values for contenteditable spans. See
2678 // http://crbug.com/238334. 2700 // http://crbug.com/238334.
2679 // EXPECT_EQ("[ Editable 1. Editable 2.", selectionAsString(frame)); 2701 // EXPECT_EQ("[ Editable 1. Editable 2.", selectionAsString(frame));
2680 } 2702 }
2681 2703
2682 TEST_F(WebFrameTest, SelectRangeCanMoveSelectionEnd) 2704 TEST_F(WebFrameTest, SelectRangeCanMoveSelectionEnd)
2683 { 2705 {
2684 registerMockedHttpURLLoad("text_selection.html"); 2706 registerMockedHttpURLLoad("text_selection.html");
2685 m_webView = createWebViewForTextSelection(m_baseURL + "text_selection.html") ; 2707 initializeWebViewForTextSelection(m_baseURL + "text_selection.html");
2686 WebFrame* frame = m_webView->mainFrame(); 2708 WebFrame* frame = m_webView->mainFrame();
2687 2709
2688 // Select first span. We can move the end to include the second span. 2710 // Select first span. We can move the end to include the second span.
2689 frame->executeScript(WebScriptSource("selectElement('header_1');")); 2711 frame->executeScript(WebScriptSource("selectElement('header_1');"));
2690 EXPECT_EQ("Header 1.", selectionAsString(frame)); 2712 EXPECT_EQ("Header 1.", selectionAsString(frame));
2691 frame->selectRange(topLeft(elementBounds(frame, "header_1")), bottomRightMin usOne(elementBounds(frame, "header_2"))); 2713 frame->selectRange(topLeft(elementBounds(frame, "header_1")), bottomRightMin usOne(elementBounds(frame, "header_2")));
2692 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame)); 2714 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame));
2693 2715
2694 // We can move the start and end together. 2716 // We can move the start and end together.
2695 frame->executeScript(WebScriptSource("selectElement('header_2');")); 2717 frame->executeScript(WebScriptSource("selectElement('header_2');"));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2729 static int computeOffset(WebCore::RenderObject* renderer, int x, int y) 2751 static int computeOffset(WebCore::RenderObject* renderer, int x, int y)
2730 { 2752 {
2731 return WebCore::VisiblePosition(renderer->positionForPoint(WebCore::LayoutPo int(x, y))).deepEquivalent().computeOffsetInContainerNode(); 2753 return WebCore::VisiblePosition(renderer->positionForPoint(WebCore::LayoutPo int(x, y))).deepEquivalent().computeOffsetInContainerNode();
2732 } 2754 }
2733 2755
2734 // positionForPoint returns the wrong values for contenteditable spans. See 2756 // positionForPoint returns the wrong values for contenteditable spans. See
2735 // http://crbug.com/238334. 2757 // http://crbug.com/238334.
2736 TEST_F(WebFrameTest, DISABLED_PositionForPointTest) 2758 TEST_F(WebFrameTest, DISABLED_PositionForPointTest)
2737 { 2759 {
2738 registerMockedHttpURLLoad("select_range_span_editable.html"); 2760 registerMockedHttpURLLoad("select_range_span_editable.html");
2739 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_span_edi table.html"); 2761 initializeWebViewForTextSelection(m_baseURL + "select_range_span_editable.ht ml");
2740 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame()); 2762 WebFrameImpl* mainFrame = toWebFrameImpl(m_webView->mainFrame());
2741 WebCore::RenderObject* renderer = mainFrame->frame()->selection().rootEditab leElement()->renderer(); 2763 WebCore::RenderObject* renderer = mainFrame->frame()->selection().rootEditab leElement()->renderer();
2742 EXPECT_EQ(0, computeOffset(renderer, -1, -1)); 2764 EXPECT_EQ(0, computeOffset(renderer, -1, -1));
2743 EXPECT_EQ(64, computeOffset(renderer, 1000, 1000)); 2765 EXPECT_EQ(64, computeOffset(renderer, 1000, 1000));
2744 2766
2745 registerMockedHttpURLLoad("select_range_div_editable.html"); 2767 registerMockedHttpURLLoad("select_range_div_editable.html");
2746 m_webView = createWebViewForTextSelection(m_baseURL + "select_range_div_edit able.html"); 2768 initializeWebViewForTextSelection(m_baseURL + "select_range_div_editable.htm l");
2747 mainFrame = toWebFrameImpl(m_webView->mainFrame()); 2769 mainFrame = toWebFrameImpl(m_webView->mainFrame());
2748 renderer = mainFrame->frame()->selection().rootEditableElement()->renderer() ; 2770 renderer = mainFrame->frame()->selection().rootEditableElement()->renderer() ;
2749 EXPECT_EQ(0, computeOffset(renderer, -1, -1)); 2771 EXPECT_EQ(0, computeOffset(renderer, -1, -1));
2750 EXPECT_EQ(64, computeOffset(renderer, 1000, 1000)); 2772 EXPECT_EQ(64, computeOffset(renderer, 1000, 1000));
2751 } 2773 }
2752 2774
2753 #if !OS(MACOSX) 2775 #if !OS(MACOSX)
2754 TEST_F(WebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved) 2776 TEST_F(WebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved)
2755 { 2777 {
2756 WebFrameImpl* frame; 2778 WebFrameImpl* frame;
2757 registerMockedHttpURLLoad("move_caret.html"); 2779 registerMockedHttpURLLoad("move_caret.html");
2758 2780
2759 m_webView = createWebViewForTextSelection(m_baseURL + "move_caret.html"); 2781 initializeWebViewForTextSelection(m_baseURL + "move_caret.html");
2760 frame = (WebFrameImpl*)m_webView->mainFrame(); 2782 frame = (WebFrameImpl*)m_webView->mainFrame();
2761 2783
2762 WebRect initialStartRect; 2784 WebRect initialStartRect;
2763 WebRect initialEndRect; 2785 WebRect initialEndRect;
2764 WebRect startRect; 2786 WebRect startRect;
2765 WebRect endRect; 2787 WebRect endRect;
2766 2788
2767 frame->executeScript(WebScriptSource("selectRange();")); 2789 frame->executeScript(WebScriptSource("selectRange();"));
2768 m_webView->selectionBounds(initialStartRect, initialEndRect); 2790 m_webView->selectionBounds(initialStartRect, initialEndRect);
2769 WebPoint movedStart(topLeft(initialStartRect)); 2791 WebPoint movedStart(topLeft(initialStartRect));
(...skipping 23 matching lines...) Expand all
2793 m_webView->selectionBounds(startRect, endRect); 2815 m_webView->selectionBounds(startRect, endRect);
2794 EXPECT_EQ(startRect, initialStartRect); 2816 EXPECT_EQ(startRect, initialStartRect);
2795 EXPECT_EQ(endRect, initialEndRect); 2817 EXPECT_EQ(endRect, initialEndRect);
2796 } 2818 }
2797 2819
2798 TEST_F(WebFrameTest, MoveCaretStaysHorizontallyAlignedWhenMoved) 2820 TEST_F(WebFrameTest, MoveCaretStaysHorizontallyAlignedWhenMoved)
2799 { 2821 {
2800 WebFrameImpl* frame; 2822 WebFrameImpl* frame;
2801 registerMockedHttpURLLoad("move_caret.html"); 2823 registerMockedHttpURLLoad("move_caret.html");
2802 2824
2803 m_webView = createWebViewForTextSelection(m_baseURL + "move_caret.html"); 2825 initializeWebViewForTextSelection(m_baseURL + "move_caret.html");
2804 frame = (WebFrameImpl*)m_webView->mainFrame(); 2826 frame = (WebFrameImpl*)m_webView->mainFrame();
2805 2827
2806 WebRect initialStartRect; 2828 WebRect initialStartRect;
2807 WebRect initialEndRect; 2829 WebRect initialEndRect;
2808 WebRect startRect; 2830 WebRect startRect;
2809 WebRect endRect; 2831 WebRect endRect;
2810 2832
2811 frame->executeScript(WebScriptSource("selectCaret();")); 2833 frame->executeScript(WebScriptSource("selectCaret();"));
2812 m_webView->selectionBounds(initialStartRect, initialEndRect); 2834 m_webView->selectionBounds(initialStartRect, initialEndRect);
2813 WebPoint moveTo(topLeft(initialStartRect)); 2835 WebPoint moveTo(topLeft(initialStartRect));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2853 2875
2854 TEST_F(WebFrameTest, DisambiguationPopup) 2876 TEST_F(WebFrameTest, DisambiguationPopup)
2855 { 2877 {
2856 const std::string htmlFile = "disambiguation_popup.html"; 2878 const std::string htmlFile = "disambiguation_popup.html";
2857 registerMockedHttpURLLoad(htmlFile); 2879 registerMockedHttpURLLoad(htmlFile);
2858 2880
2859 DisambiguationPopupTestWebViewClient client; 2881 DisambiguationPopupTestWebViewClient client;
2860 2882
2861 // Make sure we initialize to minimum scale, even if the window size 2883 // Make sure we initialize to minimum scale, even if the window size
2862 // only becomes available after the load begins. 2884 // only becomes available after the load begins.
2863 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + htmlFile, tru e, 0, &client); 2885 initializeWebViewAndLoad(m_baseURL + htmlFile, true, 0, &client);
2864 m_webView->resize(WebSize(1000, 1000)); 2886 m_webView->resize(WebSize(1000, 1000));
2865 m_webView->layout(); 2887 m_webView->layout();
2866 2888
2867 client.resetTriggered(); 2889 client.resetTriggered();
2868 m_webView->handleInputEvent(fatTap(0, 0)); 2890 m_webView->handleInputEvent(fatTap(0, 0));
2869 EXPECT_FALSE(client.triggered()); 2891 EXPECT_FALSE(client.triggered());
2870 2892
2871 client.resetTriggered(); 2893 client.resetTriggered();
2872 m_webView->handleInputEvent(fatTap(200, 115)); 2894 m_webView->handleInputEvent(fatTap(200, 115));
2873 EXPECT_FALSE(client.triggered()); 2895 EXPECT_FALSE(client.triggered());
(...skipping 26 matching lines...) Expand all
2900 } 2922 }
2901 2923
2902 TEST_F(WebFrameTest, DisambiguationPopupNoContainer) 2924 TEST_F(WebFrameTest, DisambiguationPopupNoContainer)
2903 { 2925 {
2904 registerMockedHttpURLLoad("disambiguation_popup_no_container.html"); 2926 registerMockedHttpURLLoad("disambiguation_popup_no_container.html");
2905 2927
2906 DisambiguationPopupTestWebViewClient client; 2928 DisambiguationPopupTestWebViewClient client;
2907 2929
2908 // Make sure we initialize to minimum scale, even if the window size 2930 // Make sure we initialize to minimum scale, even if the window size
2909 // only becomes available after the load begins. 2931 // only becomes available after the load begins.
2910 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "disambiguati on_popup_no_container.html", true, 0, &client); 2932 initializeWebViewAndLoad(m_baseURL + "disambiguation_popup_no_container.html ", true, 0, &client);
2911 m_webView->resize(WebSize(1000, 1000)); 2933 m_webView->resize(WebSize(1000, 1000));
2912 m_webView->layout(); 2934 m_webView->layout();
2913 2935
2914 client.resetTriggered(); 2936 client.resetTriggered();
2915 m_webView->handleInputEvent(fatTap(50, 50)); 2937 m_webView->handleInputEvent(fatTap(50, 50));
2916 EXPECT_FALSE(client.triggered()); 2938 EXPECT_FALSE(client.triggered());
2917 2939
2918 m_webView->close(); 2940 m_webView->close();
2919 m_webView = 0; 2941 m_webView = 0;
2920 } 2942 }
2921 2943
2922 TEST_F(WebFrameTest, DisambiguationPopupMobileSite) 2944 TEST_F(WebFrameTest, DisambiguationPopupMobileSite)
2923 { 2945 {
2924 const std::string htmlFile = "disambiguation_popup_mobile_site.html"; 2946 const std::string htmlFile = "disambiguation_popup_mobile_site.html";
2925 registerMockedHttpURLLoad(htmlFile); 2947 registerMockedHttpURLLoad(htmlFile);
2926 2948
2927 DisambiguationPopupTestWebViewClient client; 2949 DisambiguationPopupTestWebViewClient client;
2928 2950
2929 // Make sure we initialize to minimum scale, even if the window size 2951 // Make sure we initialize to minimum scale, even if the window size
2930 // only becomes available after the load begins. 2952 // only becomes available after the load begins.
2931 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + htmlFile, tru e, 0, &client); 2953 initializeWebViewAndLoad(m_baseURL + htmlFile, true, 0, &client);
2932 m_webView->enableFixedLayoutMode(true); 2954 m_webView->enableFixedLayoutMode(true);
2933 m_webView->settings()->setViewportEnabled(true); 2955 m_webView->settings()->setViewportEnabled(true);
2934 m_webView->resize(WebSize(1000, 1000)); 2956 m_webView->resize(WebSize(1000, 1000));
2935 m_webView->layout(); 2957 m_webView->layout();
2936 2958
2937 client.resetTriggered(); 2959 client.resetTriggered();
2938 m_webView->handleInputEvent(fatTap(0, 0)); 2960 m_webView->handleInputEvent(fatTap(0, 0));
2939 EXPECT_FALSE(client.triggered()); 2961 EXPECT_FALSE(client.triggered());
2940 2962
2941 client.resetTriggered(); 2963 client.resetTriggered();
(...skipping 18 matching lines...) Expand all
2960 2982
2961 TEST_F(WebFrameTest, DisambiguationPopupViewportSite) 2983 TEST_F(WebFrameTest, DisambiguationPopupViewportSite)
2962 { 2984 {
2963 const std::string htmlFile = "disambiguation_popup_viewport_site.html"; 2985 const std::string htmlFile = "disambiguation_popup_viewport_site.html";
2964 registerMockedHttpURLLoad(htmlFile); 2986 registerMockedHttpURLLoad(htmlFile);
2965 2987
2966 DisambiguationPopupTestWebViewClient client; 2988 DisambiguationPopupTestWebViewClient client;
2967 2989
2968 // Make sure we initialize to minimum scale, even if the window size 2990 // Make sure we initialize to minimum scale, even if the window size
2969 // only becomes available after the load begins. 2991 // only becomes available after the load begins.
2970 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + htmlFile, tru e, 0, &client); 2992 initializeWebViewAndLoad(m_baseURL + htmlFile, true, 0, &client);
2971 m_webView->enableFixedLayoutMode(true); 2993 m_webView->enableFixedLayoutMode(true);
2972 m_webView->settings()->setViewportEnabled(true); 2994 m_webView->settings()->setViewportEnabled(true);
2973 m_webView->resize(WebSize(1000, 1000)); 2995 m_webView->resize(WebSize(1000, 1000));
2974 m_webView->layout(); 2996 m_webView->layout();
2975 2997
2976 client.resetTriggered(); 2998 client.resetTriggered();
2977 m_webView->handleInputEvent(fatTap(0, 0)); 2999 m_webView->handleInputEvent(fatTap(0, 0));
2978 EXPECT_FALSE(client.triggered()); 3000 EXPECT_FALSE(client.triggered());
2979 3001
2980 client.resetTriggered(); 3002 client.resetTriggered();
(...skipping 21 matching lines...) Expand all
3002 const unsigned viewportWidth = 500; 3024 const unsigned viewportWidth = 500;
3003 const unsigned viewportHeight = 1000; 3025 const unsigned viewportHeight = 1000;
3004 const unsigned divHeight = 100; 3026 const unsigned divHeight = 100;
3005 const std::string htmlFile = "disambiguation_popup_blacklist.html"; 3027 const std::string htmlFile = "disambiguation_popup_blacklist.html";
3006 registerMockedHttpURLLoad(htmlFile); 3028 registerMockedHttpURLLoad(htmlFile);
3007 3029
3008 DisambiguationPopupTestWebViewClient client; 3030 DisambiguationPopupTestWebViewClient client;
3009 3031
3010 // Make sure we initialize to minimum scale, even if the window size 3032 // Make sure we initialize to minimum scale, even if the window size
3011 // only becomes available after the load begins. 3033 // only becomes available after the load begins.
3012 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + htmlFile, tru e, 0, &client); 3034 initializeWebViewAndLoad(m_baseURL + htmlFile, true, 0, &client);
3013 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 3035 m_webView->resize(WebSize(viewportWidth, viewportHeight));
3014 m_webView->layout(); 3036 m_webView->layout();
3015 3037
3016 // Click somewhere where the popup shouldn't appear. 3038 // Click somewhere where the popup shouldn't appear.
3017 client.resetTriggered(); 3039 client.resetTriggered();
3018 m_webView->handleInputEvent(fatTap(viewportWidth / 2, 0)); 3040 m_webView->handleInputEvent(fatTap(viewportWidth / 2, 0));
3019 EXPECT_FALSE(client.triggered()); 3041 EXPECT_FALSE(client.triggered());
3020 3042
3021 // Click directly in between two container divs with click handlers, with ch ildren that don't handle clicks. 3043 // Click directly in between two container divs with click handlers, with ch ildren that don't handle clicks.
3022 client.resetTriggered(); 3044 client.resetTriggered();
(...skipping 10 matching lines...) Expand all
3033 } 3055 }
3034 3056
3035 TEST_F(WebFrameTest, DisambiguationPopupPageScale) 3057 TEST_F(WebFrameTest, DisambiguationPopupPageScale)
3036 { 3058 {
3037 registerMockedHttpURLLoad("disambiguation_popup_page_scale.html"); 3059 registerMockedHttpURLLoad("disambiguation_popup_page_scale.html");
3038 3060
3039 DisambiguationPopupTestWebViewClient client; 3061 DisambiguationPopupTestWebViewClient client;
3040 3062
3041 // Make sure we initialize to minimum scale, even if the window size 3063 // Make sure we initialize to minimum scale, even if the window size
3042 // only becomes available after the load begins. 3064 // only becomes available after the load begins.
3043 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "disambiguati on_popup_page_scale.html", true, 0, &client); 3065 initializeWebViewAndLoad(m_baseURL + "disambiguation_popup_page_scale.html", true, 0, &client);
3044 m_webView->resize(WebSize(1000, 1000)); 3066 m_webView->resize(WebSize(1000, 1000));
3045 m_webView->layout(); 3067 m_webView->layout();
3046 3068
3047 client.resetTriggered(); 3069 client.resetTriggered();
3048 m_webView->handleInputEvent(fatTap(80, 80)); 3070 m_webView->handleInputEvent(fatTap(80, 80));
3049 EXPECT_TRUE(client.triggered()); 3071 EXPECT_TRUE(client.triggered());
3050 3072
3051 client.resetTriggered(); 3073 client.resetTriggered();
3052 m_webView->handleInputEvent(fatTap(230, 190)); 3074 m_webView->handleInputEvent(fatTap(230, 190));
3053 EXPECT_TRUE(client.triggered()); 3075 EXPECT_TRUE(client.triggered());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3089 bool commitCalled() const { return m_commitCalled; } 3111 bool commitCalled() const { return m_commitCalled; }
3090 3112
3091 private: 3113 private:
3092 bool m_commitCalled; 3114 bool m_commitCalled;
3093 }; 3115 };
3094 3116
3095 TEST_F(WebFrameTest, ReplaceNavigationAfterHistoryNavigation) 3117 TEST_F(WebFrameTest, ReplaceNavigationAfterHistoryNavigation)
3096 { 3118 {
3097 TestSubstituteDataWebFrameClient webFrameClient; 3119 TestSubstituteDataWebFrameClient webFrameClient;
3098 3120
3099 m_webView = FrameTestHelpers::createWebViewAndLoad("about:blank", true, &web FrameClient); 3121 initializeWebViewAndLoad("about:blank", true, &webFrameClient);
3100 runPendingTasks(); 3122 runPendingTasks();
3101 WebFrame* frame = m_webView->mainFrame(); 3123 WebFrame* frame = m_webView->mainFrame();
3102 3124
3103 // Load a url as a history navigation that will return an error. TestSubstit uteDataWebFrameClient 3125 // Load a url as a history navigation that will return an error. TestSubstit uteDataWebFrameClient
3104 // will start a SubstituteData load in response to the load failure, which s hould get fully committed. 3126 // will start a SubstituteData load in response to the load failure, which s hould get fully committed.
3105 // Due to https://bugs.webkit.org/show_bug.cgi?id=91685, FrameLoader::didRec eiveData() wasn't getting 3127 // Due to https://bugs.webkit.org/show_bug.cgi?id=91685, FrameLoader::didRec eiveData() wasn't getting
3106 // called in this case, which resulted in the SubstituteData document not ge tting displayed. 3128 // called in this case, which resulted in the SubstituteData document not ge tting displayed.
3107 WebURLError error; 3129 WebURLError error;
3108 error.reason = 1337; 3130 error.reason = 1337;
3109 error.domain = "WebFrameTest"; 3131 error.domain = "WebFrameTest";
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3153 3175
3154 int m_numBodies; 3176 int m_numBodies;
3155 bool m_didLoad; 3177 bool m_didLoad;
3156 }; 3178 };
3157 3179
3158 TEST_F(WebFrameTest, HTMLDocument) 3180 TEST_F(WebFrameTest, HTMLDocument)
3159 { 3181 {
3160 registerMockedHttpURLLoad("clipped-body.html"); 3182 registerMockedHttpURLLoad("clipped-body.html");
3161 3183
3162 TestWillInsertBodyWebFrameClient webFrameClient; 3184 TestWillInsertBodyWebFrameClient webFrameClient;
3163 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "clipped-body .html", false, &webFrameClient); 3185 initializeWebViewAndLoad(m_baseURL + "clipped-body.html", false, &webFrameCl ient);
3164 3186
3165 EXPECT_TRUE(webFrameClient.m_didLoad); 3187 EXPECT_TRUE(webFrameClient.m_didLoad);
3166 EXPECT_EQ(1, webFrameClient.m_numBodies); 3188 EXPECT_EQ(1, webFrameClient.m_numBodies);
3167 3189
3168 m_webView->close(); 3190 m_webView->close();
3169 m_webView = 0; 3191 m_webView = 0;
3170 } 3192 }
3171 3193
3172 TEST_F(WebFrameTest, EmptyDocument) 3194 TEST_F(WebFrameTest, EmptyDocument)
3173 { 3195 {
3174 registerMockedHttpURLLoad("pageserializer/green_rectangle.svg"); 3196 registerMockedHttpURLLoad("pageserializer/green_rectangle.svg");
3175 3197
3176 TestWillInsertBodyWebFrameClient webFrameClient; 3198 TestWillInsertBodyWebFrameClient webFrameClient;
3177 m_webView = FrameTestHelpers::createWebView(false, &webFrameClient); 3199 initializeWebView(false, &webFrameClient);
3178 3200
3179 EXPECT_FALSE(webFrameClient.m_didLoad); 3201 EXPECT_FALSE(webFrameClient.m_didLoad);
3180 EXPECT_EQ(1, webFrameClient.m_numBodies); // The empty document that a new f rame starts with triggers this. 3202 EXPECT_EQ(1, webFrameClient.m_numBodies); // The empty document that a new f rame starts with triggers this.
3181 m_webView->close(); 3203 m_webView->close();
3182 m_webView = 0; 3204 m_webView = 0;
3183 } 3205 }
3184 3206
3185 TEST_F(WebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSelection) 3207 TEST_F(WebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSelection)
3186 { 3208 {
3187 m_webView = FrameTestHelpers::createWebViewAndLoad("about:blank", true); 3209 initializeWebViewAndLoad("about:blank", true);
3188 WebFrame* frame = m_webView->mainFrame(); 3210 WebFrame* frame = m_webView->mainFrame();
3189 3211
3190 // This test passes if this doesn't crash. 3212 // This test passes if this doesn't crash.
3191 frame->moveCaretSelectionTowardsWindowPoint(WebPoint(0, 0)); 3213 frame->moveCaretSelectionTowardsWindowPoint(WebPoint(0, 0));
3192 } 3214 }
3193 3215
3194 class SpellCheckClient : public WebSpellCheckClient { 3216 class SpellCheckClient : public WebSpellCheckClient {
3195 public: 3217 public:
3196 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { } 3218 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { }
3197 virtual ~SpellCheckClient() { } 3219 virtual ~SpellCheckClient() { }
3198 virtual void requestCheckingOfText(const WebKit::WebString&, const WebKit::W ebVector<uint32_t>&, const WebKit::WebVector<unsigned>&, WebKit::WebTextChecking Completion* completion) OVERRIDE 3220 virtual void requestCheckingOfText(const WebKit::WebString&, const WebKit::W ebVector<uint32_t>&, const WebKit::WebVector<unsigned>&, WebKit::WebTextChecking Completion* completion) OVERRIDE
3199 { 3221 {
3200 ++m_numberOfTimesChecked; 3222 ++m_numberOfTimesChecked;
3201 Vector<WebTextCheckingResult> results; 3223 Vector<WebTextCheckingResult> results;
3202 const int misspellingStartOffset = 1; 3224 const int misspellingStartOffset = 1;
3203 const int misspellingLength = 8; 3225 const int misspellingLength = 8;
3204 results.append(WebTextCheckingResult(WebTextCheckingTypeSpelling, misspe llingStartOffset, misspellingLength, WebString(), m_hash)); 3226 results.append(WebTextCheckingResult(WebTextCheckingTypeSpelling, misspe llingStartOffset, misspellingLength, WebString(), m_hash));
3205 completion->didFinishCheckingText(results); 3227 completion->didFinishCheckingText(results);
3206 } 3228 }
3207 int numberOfTimesChecked() const { return m_numberOfTimesChecked; } 3229 int numberOfTimesChecked() const { return m_numberOfTimesChecked; }
3208 private: 3230 private:
3209 int m_numberOfTimesChecked; 3231 int m_numberOfTimesChecked;
3210 uint32_t m_hash; 3232 uint32_t m_hash;
3211 }; 3233 };
3212 3234
3213 TEST_F(WebFrameTest, ReplaceMisspelledRange) 3235 TEST_F(WebFrameTest, ReplaceMisspelledRange)
3214 { 3236 {
3215 registerMockedHttpURLLoad("spell.html"); 3237 registerMockedHttpURLLoad("spell.html");
3216 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "spell.html") ; 3238 initializeWebViewAndLoad(m_baseURL + "spell.html");
3217 SpellCheckClient spellcheck; 3239 SpellCheckClient spellcheck;
3218 m_webView->setSpellCheckClient(&spellcheck); 3240 m_webView->setSpellCheckClient(&spellcheck);
3219 3241
3220 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame()); 3242 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame());
3221 Document* document = frame->frame()->document(); 3243 Document* document = frame->frame()->document();
3222 Element* element = document->getElementById("data"); 3244 Element* element = document->getElementById("data");
3223 3245
3224 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true); 3246 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true);
3225 m_webView->settings()->setUnifiedTextCheckerEnabled(true); 3247 m_webView->settings()->setUnifiedTextCheckerEnabled(true);
3226 m_webView->settings()->setEditingBehavior(WebSettings::EditingBehaviorWin); 3248 m_webView->settings()->setEditingBehavior(WebSettings::EditingBehaviorWin);
(...skipping 12 matching lines...) Expand all
3239 frame->replaceMisspelledRange("welcome"); 3261 frame->replaceMisspelledRange("welcome");
3240 EXPECT_EQ("_welcome_.", std::string(frame->contentAsText(std::numeric_limits <size_t>::max()).utf8().data())); 3262 EXPECT_EQ("_welcome_.", std::string(frame->contentAsText(std::numeric_limits <size_t>::max()).utf8().data()));
3241 3263
3242 m_webView->close(); 3264 m_webView->close();
3243 m_webView = 0; 3265 m_webView = 0;
3244 } 3266 }
3245 3267
3246 TEST_F(WebFrameTest, RemoveSpellingMarkers) 3268 TEST_F(WebFrameTest, RemoveSpellingMarkers)
3247 { 3269 {
3248 registerMockedHttpURLLoad("spell.html"); 3270 registerMockedHttpURLLoad("spell.html");
3249 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "spell.html") ; 3271 initializeWebViewAndLoad(m_baseURL + "spell.html");
3250 SpellCheckClient spellcheck; 3272 SpellCheckClient spellcheck;
3251 m_webView->setSpellCheckClient(&spellcheck); 3273 m_webView->setSpellCheckClient(&spellcheck);
3252 3274
3253 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame()); 3275 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame());
3254 Document* document = frame->frame()->document(); 3276 Document* document = frame->frame()->document();
3255 Element* element = document->getElementById("data"); 3277 Element* element = document->getElementById("data");
3256 3278
3257 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true); 3279 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true);
3258 m_webView->settings()->setUnifiedTextCheckerEnabled(true); 3280 m_webView->settings()->setUnifiedTextCheckerEnabled(true);
3259 m_webView->settings()->setEditingBehavior(WebSettings::EditingBehaviorWin); 3281 m_webView->settings()->setEditingBehavior(WebSettings::EditingBehaviorWin);
3260 3282
3261 element->focus(); 3283 element->focus();
3262 document->execCommand("InsertText", false, "_wellcome_."); 3284 document->execCommand("InsertText", false, "_wellcome_.");
3263 3285
3264 frame->removeSpellingMarkers(); 3286 frame->removeSpellingMarkers();
3265 3287
3266 const int allTextBeginOffset = 0; 3288 const int allTextBeginOffset = 0;
3267 const int allTextLength = 11; 3289 const int allTextLength = 11;
3268 frame->selectRange(WebRange::fromDocumentRange(frame, allTextBeginOffset, al lTextLength)); 3290 frame->selectRange(WebRange::fromDocumentRange(frame, allTextBeginOffset, al lTextLength));
3269 RefPtr<Range> selectionRange = frame->frame()->selection().toNormalizedRange (); 3291 RefPtr<Range> selectionRange = frame->frame()->selection().toNormalizedRange ();
3270 3292
3271 EXPECT_EQ(0U, document->markers()->markersInRange(selectionRange.get(), Docu mentMarker::Spelling).size()); 3293 EXPECT_EQ(0U, document->markers()->markersInRange(selectionRange.get(), Docu mentMarker::Spelling).size());
3272 3294
3273 m_webView->close(); 3295 m_webView->close();
3274 m_webView = 0; 3296 m_webView = 0;
3275 } 3297 }
3276 3298
3277 TEST_F(WebFrameTest, MarkerHashIdentifiers) { 3299 TEST_F(WebFrameTest, MarkerHashIdentifiers) {
3278 registerMockedHttpURLLoad("spell.html"); 3300 registerMockedHttpURLLoad("spell.html");
3279 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "spell.html") ; 3301 initializeWebViewAndLoad(m_baseURL + "spell.html");
3280 3302
3281 static const uint32_t kHash = 42; 3303 static const uint32_t kHash = 42;
3282 SpellCheckClient spellcheck(kHash); 3304 SpellCheckClient spellcheck(kHash);
3283 m_webView->setSpellCheckClient(&spellcheck); 3305 m_webView->setSpellCheckClient(&spellcheck);
3284 3306
3285 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame()); 3307 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame());
3286 Document* document = frame->frame()->document(); 3308 Document* document = frame->frame()->document();
3287 Element* element = document->getElementById("data"); 3309 Element* element = document->getElementById("data");
3288 3310
3289 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true); 3311 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3328 m_completion = 0; 3350 m_completion = 0;
3329 } 3351 }
3330 3352
3331 private: 3353 private:
3332 WebKit::WebTextCheckingCompletion* m_completion; 3354 WebKit::WebTextCheckingCompletion* m_completion;
3333 }; 3355 };
3334 3356
3335 TEST_F(WebFrameTest, SlowSpellcheckMarkerPosition) 3357 TEST_F(WebFrameTest, SlowSpellcheckMarkerPosition)
3336 { 3358 {
3337 registerMockedHttpURLLoad("spell.html"); 3359 registerMockedHttpURLLoad("spell.html");
3338 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "spell.html") ; 3360 initializeWebViewAndLoad(m_baseURL + "spell.html");
3339 3361
3340 StubbornSpellCheckClient spellcheck; 3362 StubbornSpellCheckClient spellcheck;
3341 m_webView->setSpellCheckClient(&spellcheck); 3363 m_webView->setSpellCheckClient(&spellcheck);
3342 3364
3343 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame()); 3365 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame());
3344 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>(); 3366 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>();
3345 Document* document = frame->frame()->document(); 3367 Document* document = frame->frame()->document();
3346 Element* element = document->getElementById("data"); 3368 Element* element = document->getElementById("data");
3347 3369
3348 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true); 3370 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true);
(...skipping 13 matching lines...) Expand all
3362 3384
3363 m_webView->close(); 3385 m_webView->close();
3364 m_webView = 0; 3386 m_webView = 0;
3365 } 3387 }
3366 3388
3367 // This test verifies that cancelling spelling request does not cause a 3389 // This test verifies that cancelling spelling request does not cause a
3368 // write-after-free when there's no spellcheck client set. 3390 // write-after-free when there's no spellcheck client set.
3369 TEST_F(WebFrameTest, CancelSpellingRequestCrash) 3391 TEST_F(WebFrameTest, CancelSpellingRequestCrash)
3370 { 3392 {
3371 registerMockedHttpURLLoad("spell.html"); 3393 registerMockedHttpURLLoad("spell.html");
3372 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "spell.html") ; 3394 initializeWebViewAndLoad(m_baseURL + "spell.html");
3373 m_webView->setSpellCheckClient(0); 3395 m_webView->setSpellCheckClient(0);
3374 3396
3375 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame()); 3397 WebFrameImpl* frame = toWebFrameImpl(m_webView->mainFrame());
3376 Document* document = frame->frame()->document(); 3398 Document* document = frame->frame()->document();
3377 Element* element = document->getElementById("data"); 3399 Element* element = document->getElementById("data");
3378 3400
3379 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true); 3401 m_webView->settings()->setAsynchronousSpellCheckingEnabled(true);
3380 m_webView->settings()->setUnifiedTextCheckerEnabled(true); 3402 m_webView->settings()->setUnifiedTextCheckerEnabled(true);
3381 m_webView->settings()->setEditingBehavior(WebSettings::EditingBehaviorWin); 3403 m_webView->settings()->setEditingBehavior(WebSettings::EditingBehaviorWin);
3382 3404
(...skipping 16 matching lines...) Expand all
3399 EXPECT_TRUE(!m_didAccessInitialDocument); 3421 EXPECT_TRUE(!m_didAccessInitialDocument);
3400 m_didAccessInitialDocument = true; 3422 m_didAccessInitialDocument = true;
3401 } 3423 }
3402 3424
3403 bool m_didAccessInitialDocument; 3425 bool m_didAccessInitialDocument;
3404 }; 3426 };
3405 3427
3406 TEST_F(WebFrameTest, DidAccessInitialDocumentBody) 3428 TEST_F(WebFrameTest, DidAccessInitialDocumentBody)
3407 { 3429 {
3408 TestAccessInitialDocumentWebFrameClient webFrameClient; 3430 TestAccessInitialDocumentWebFrameClient webFrameClient;
3409 m_webView = FrameTestHelpers::createWebView(true, &webFrameClient); 3431 initializeWebView(true, &webFrameClient);
3410 runPendingTasks(); 3432 runPendingTasks();
3411 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3433 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3412 3434
3413 // Create another window that will try to access it. 3435 // Create another window that will try to access it.
3414 WebView* newView = FrameTestHelpers::createWebView(true); 3436 WebView* newView = FrameTestHelpers::createWebView(true);
3415 newView->mainFrame()->setOpener(m_webView->mainFrame()); 3437 newView->mainFrame()->setOpener(m_webView->mainFrame());
3416 runPendingTasks(); 3438 runPendingTasks();
3417 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3439 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3418 3440
3419 // Access the initial document by modifying the body. 3441 // Access the initial document by modifying the body.
3420 newView->mainFrame()->executeScript( 3442 newView->mainFrame()->executeScript(
3421 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 3443 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
3422 runPendingTasks(); 3444 runPendingTasks();
3423 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 3445 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
3424 3446
3425 // Access the initial document again, to ensure we don't notify twice. 3447 // Access the initial document again, to ensure we don't notify twice.
3426 newView->mainFrame()->executeScript( 3448 newView->mainFrame()->executeScript(
3427 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 3449 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
3428 runPendingTasks(); 3450 runPendingTasks();
3429 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 3451 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
3430 3452
3431 newView->close(); 3453 newView->close();
3432 m_webView->close(); 3454 m_webView->close();
3433 m_webView = 0; 3455 m_webView = 0;
3434 } 3456 }
3435 3457
3436 TEST_F(WebFrameTest, DidAccessInitialDocumentNavigator) 3458 TEST_F(WebFrameTest, DidAccessInitialDocumentNavigator)
3437 { 3459 {
3438 TestAccessInitialDocumentWebFrameClient webFrameClient; 3460 TestAccessInitialDocumentWebFrameClient webFrameClient;
3439 m_webView = FrameTestHelpers::createWebView(true, &webFrameClient); 3461 initializeWebView(true, &webFrameClient);
3440 runPendingTasks(); 3462 runPendingTasks();
3441 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3463 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3442 3464
3443 // Create another window that will try to access it. 3465 // Create another window that will try to access it.
3444 WebView* newView = FrameTestHelpers::createWebView(true); 3466 WebView* newView = FrameTestHelpers::createWebView(true);
3445 newView->mainFrame()->setOpener(m_webView->mainFrame()); 3467 newView->mainFrame()->setOpener(m_webView->mainFrame());
3446 runPendingTasks(); 3468 runPendingTasks();
3447 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3469 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3448 3470
3449 // Access the initial document to get to the navigator object. 3471 // Access the initial document to get to the navigator object.
3450 newView->mainFrame()->executeScript( 3472 newView->mainFrame()->executeScript(
3451 WebScriptSource("console.log(window.opener.navigator);")); 3473 WebScriptSource("console.log(window.opener.navigator);"));
3452 runPendingTasks(); 3474 runPendingTasks();
3453 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 3475 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
3454 3476
3455 newView->close(); 3477 newView->close();
3456 m_webView->close(); 3478 m_webView->close();
3457 m_webView = 0; 3479 m_webView = 0;
3458 } 3480 }
3459 3481
3460 TEST_F(WebFrameTest, DidAccessInitialDocumentViaJavascriptUrl) 3482 TEST_F(WebFrameTest, DidAccessInitialDocumentViaJavascriptUrl)
3461 { 3483 {
3462 TestAccessInitialDocumentWebFrameClient webFrameClient; 3484 TestAccessInitialDocumentWebFrameClient webFrameClient;
3463 m_webView = FrameTestHelpers::createWebView(true, &webFrameClient); 3485 initializeWebView(true, &webFrameClient);
3464 runPendingTasks(); 3486 runPendingTasks();
3465 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3487 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3466 3488
3467 // Access the initial document from a javascript: URL. 3489 // Access the initial document from a javascript: URL.
3468 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "javascript:document.bod y.appendChild(document.createTextNode('Modified'))"); 3490 FrameTestHelpers::loadFrame(m_webView->mainFrame(), "javascript:document.bod y.appendChild(document.createTextNode('Modified'))");
3469 runPendingTasks(); 3491 runPendingTasks();
3470 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 3492 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
3471 3493
3472 m_webView->close(); 3494 m_webView->close();
3473 m_webView = 0; 3495 m_webView = 0;
3474 } 3496 }
3475 3497
3476 TEST_F(WebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog) 3498 TEST_F(WebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog)
3477 { 3499 {
3478 TestAccessInitialDocumentWebFrameClient webFrameClient; 3500 TestAccessInitialDocumentWebFrameClient webFrameClient;
3479 m_webView = FrameTestHelpers::createWebView(true, &webFrameClient); 3501 initializeWebView(true, &webFrameClient);
3480 runPendingTasks(); 3502 runPendingTasks();
3481 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3503 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3482 3504
3483 // Create another window that will try to access it. 3505 // Create another window that will try to access it.
3484 WebView* newView = FrameTestHelpers::createWebView(true); 3506 WebView* newView = FrameTestHelpers::createWebView(true);
3485 newView->mainFrame()->setOpener(m_webView->mainFrame()); 3507 newView->mainFrame()->setOpener(m_webView->mainFrame());
3486 runPendingTasks(); 3508 runPendingTasks();
3487 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 3509 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
3488 3510
3489 // Access the initial document by modifying the body. We normally set a 3511 // Access the initial document by modifying the body. We normally set a
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
3537 bool m_wasProgrammaticScroll; 3559 bool m_wasProgrammaticScroll;
3538 }; 3560 };
3539 3561
3540 TEST_F(WebFrameTest, CompositorScrollIsUserScrollLongPage) 3562 TEST_F(WebFrameTest, CompositorScrollIsUserScrollLongPage)
3541 { 3563 {
3542 registerMockedHttpURLLoad("long_scroll.html"); 3564 registerMockedHttpURLLoad("long_scroll.html");
3543 TestMainFrameUserOrProgrammaticScrollFrameClient client; 3565 TestMainFrameUserOrProgrammaticScrollFrameClient client;
3544 3566
3545 // Make sure we initialize to minimum scale, even if the window size 3567 // Make sure we initialize to minimum scale, even if the window size
3546 // only becomes available after the load begins. 3568 // only becomes available after the load begins.
3547 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "long_scroll. html", true, &client); 3569 initializeWebViewAndLoad(m_baseURL + "long_scroll.html", true, &client);
3548 m_webView->resize(WebSize(1000, 1000)); 3570 m_webView->resize(WebSize(1000, 1000));
3549 m_webView->layout(); 3571 m_webView->layout();
3550 3572
3551 EXPECT_FALSE(client.wasUserScroll()); 3573 EXPECT_FALSE(client.wasUserScroll());
3552 EXPECT_FALSE(client.wasProgrammaticScroll()); 3574 EXPECT_FALSE(client.wasProgrammaticScroll());
3553 3575
3554 // Do a compositor scroll, verify that this is counted as a user scroll. 3576 // Do a compositor scroll, verify that this is counted as a user scroll.
3555 webViewImpl()->applyScrollAndScale(WebSize(0, 1), 1.1f); 3577 webViewImpl()->applyScrollAndScale(WebSize(0, 1), 1.1f);
3556 EXPECT_TRUE(client.wasUserScroll()); 3578 EXPECT_TRUE(client.wasUserScroll());
3557 client.reset(); 3579 client.reset();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3592 m_webView = 0; 3614 m_webView = 0;
3593 } 3615 }
3594 3616
3595 TEST_F(WebFrameTest, CompositorScrollIsUserScrollShortPage) 3617 TEST_F(WebFrameTest, CompositorScrollIsUserScrollShortPage)
3596 { 3618 {
3597 registerMockedHttpURLLoad("short_scroll.html"); 3619 registerMockedHttpURLLoad("short_scroll.html");
3598 3620
3599 TestMainFrameUserOrProgrammaticScrollFrameClient client; 3621 TestMainFrameUserOrProgrammaticScrollFrameClient client;
3600 3622
3601 // Short page tests. 3623 // Short page tests.
3602 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "short_scroll .html", true, &client); 3624 initializeWebViewAndLoad(m_baseURL + "short_scroll.html", true, &client);
3603 3625
3604 m_webView->resize(WebSize(1000, 1000)); 3626 m_webView->resize(WebSize(1000, 1000));
3605 m_webView->layout(); 3627 m_webView->layout();
3606 3628
3607 EXPECT_FALSE(client.wasUserScroll()); 3629 EXPECT_FALSE(client.wasUserScroll());
3608 EXPECT_FALSE(client.wasProgrammaticScroll()); 3630 EXPECT_FALSE(client.wasProgrammaticScroll());
3609 3631
3610 // Non zero page scale and scroll. 3632 // Non zero page scale and scroll.
3611 webViewImpl()->applyScrollAndScale(WebSize(9, 13), 2.0f); 3633 webViewImpl()->applyScrollAndScale(WebSize(9, 13), 2.0f);
3612 EXPECT_FALSE(client.wasProgrammaticScroll()); 3634 EXPECT_FALSE(client.wasProgrammaticScroll());
(...skipping 17 matching lines...) Expand all
3630 redirectResponse.setMIMEType("text/html"); 3652 redirectResponse.setMIMEType("text/html");
3631 redirectResponse.setHTTPStatusCode(302); 3653 redirectResponse.setHTTPStatusCode(302);
3632 redirectResponse.setHTTPHeaderField("Location", redirect); 3654 redirectResponse.setHTTPHeaderField("Location", redirect);
3633 Platform::current()->unitTestSupport()->registerMockedURL(testURL, redirectR esponse, filePath); 3655 Platform::current()->unitTestSupport()->registerMockedURL(testURL, redirectR esponse, filePath);
3634 3656
3635 WebURLResponse finalResponse; 3657 WebURLResponse finalResponse;
3636 finalResponse.initialize(); 3658 finalResponse.initialize();
3637 finalResponse.setMIMEType("text/html"); 3659 finalResponse.setMIMEType("text/html");
3638 Platform::current()->unitTestSupport()->registerMockedURL(redirectURL, final Response, filePath); 3660 Platform::current()->unitTestSupport()->registerMockedURL(redirectURL, final Response, filePath);
3639 3661
3640 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "first_party_ redirect.html", true); 3662 initializeWebViewAndLoad(m_baseURL + "first_party_redirect.html", true);
3641 EXPECT_TRUE(m_webView->mainFrame()->document().firstPartyForCookies() == red irectURL); 3663 EXPECT_TRUE(m_webView->mainFrame()->document().firstPartyForCookies() == red irectURL);
3642 3664
3643 m_webView->close(); 3665 m_webView->close();
3644 m_webView = 0; 3666 m_webView = 0;
3645 } 3667 }
3646 3668
3647 class TestNavigationPolicyWebFrameClient : public WebFrameClient { 3669 class TestNavigationPolicyWebFrameClient : public WebFrameClient {
3648 public: 3670 public:
3649 3671
3650 virtual void didNavigateWithinPage(WebFrame*, bool) 3672 virtual void didNavigateWithinPage(WebFrame*, bool)
3651 { 3673 {
3652 EXPECT_TRUE(false); 3674 EXPECT_TRUE(false);
3653 } 3675 }
3654 }; 3676 };
3655 3677
3656 TEST_F(WebFrameTest, SimulateFragmentAnchorMiddleClick) 3678 TEST_F(WebFrameTest, SimulateFragmentAnchorMiddleClick)
3657 { 3679 {
3658 registerMockedHttpURLLoad("fragment_middle_click.html"); 3680 registerMockedHttpURLLoad("fragment_middle_click.html");
3659 TestNavigationPolicyWebFrameClient client; 3681 TestNavigationPolicyWebFrameClient client;
3660 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fragment_mid dle_click.html", true, &client); 3682 initializeWebViewAndLoad(m_baseURL + "fragment_middle_click.html", true, &cl ient);
3661 3683
3662 WebCore::Document* document = webViewImpl()->page()->mainFrame()->document() ; 3684 WebCore::Document* document = webViewImpl()->page()->mainFrame()->document() ;
3663 WebCore::KURL destination = document->url(); 3685 WebCore::KURL destination = document->url();
3664 destination.setFragmentIdentifier("test"); 3686 destination.setFragmentIdentifier("test");
3665 3687
3666 RefPtr<WebCore::Event> event = WebCore::MouseEvent::create(WebCore::eventNam es().clickEvent, false, false, 3688 RefPtr<WebCore::Event> event = WebCore::MouseEvent::create(WebCore::eventNam es().clickEvent, false, false,
3667 document->defaultView(), 0, 0, 0, 0, 0, 0, 0, false, false, false, false , 1, 0, 0); 3689 document->defaultView(), 0, 0, 0, 0, 0, 0, 0, false, false, false, false , 1, 0, 0);
3668 WebCore::FrameLoadRequest frameRequest(document->securityOrigin(), WebCore:: ResourceRequest(destination)); 3690 WebCore::FrameLoadRequest frameRequest(document->securityOrigin(), WebCore:: ResourceRequest(destination));
3669 frameRequest.setTriggeringEvent(event); 3691 frameRequest.setTriggeringEvent(event);
3670 webViewImpl()->page()->mainFrame()->loader()->load(frameRequest); 3692 webViewImpl()->page()->mainFrame()->loader()->load(frameRequest);
3671 3693
3672 m_webView->close(); 3694 m_webView->close();
3673 m_webView = 0; 3695 m_webView = 0;
3674 } 3696 }
3675 3697
3676 TEST_F(WebFrameTest, BackToReload) 3698 TEST_F(WebFrameTest, BackToReload)
3677 { 3699 {
3678 registerMockedHttpURLLoad("fragment_middle_click.html"); 3700 registerMockedHttpURLLoad("fragment_middle_click.html");
3679 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fragment_mid dle_click.html", true); 3701 initializeWebViewAndLoad(m_baseURL + "fragment_middle_click.html", true);
3680 WebFrame* frame = m_webView->mainFrame(); 3702 WebFrame* frame = m_webView->mainFrame();
3681 WebHistoryItem firstItem = frame->currentHistoryItem(); 3703 WebHistoryItem firstItem = frame->currentHistoryItem();
3682 EXPECT_FALSE(firstItem.isNull()); 3704 EXPECT_FALSE(firstItem.isNull());
3683 3705
3684 registerMockedHttpURLLoad("white-1x1.png"); 3706 registerMockedHttpURLLoad("white-1x1.png");
3685 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 3707 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
3686 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 3708 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
3687 EXPECT_FALSE(frame->previousHistoryItem().isNull()); 3709 EXPECT_FALSE(frame->previousHistoryItem().isNull());
3688 EXPECT_EQ(firstItem.urlString(), frame->previousHistoryItem().urlString()); 3710 EXPECT_EQ(firstItem.urlString(), frame->previousHistoryItem().urlString());
3689 3711
(...skipping 25 matching lines...) Expand all
3715 bool frameLoadTypeSameSeen() const { return m_frameLoadTypeSameSeen; } 3737 bool frameLoadTypeSameSeen() const { return m_frameLoadTypeSameSeen; }
3716 3738
3717 private: 3739 private:
3718 bool m_frameLoadTypeSameSeen; 3740 bool m_frameLoadTypeSameSeen;
3719 }; 3741 };
3720 3742
3721 TEST_F(WebFrameTest, NavigateToSame) 3743 TEST_F(WebFrameTest, NavigateToSame)
3722 { 3744 {
3723 registerMockedHttpURLLoad("navigate_to_same.html"); 3745 registerMockedHttpURLLoad("navigate_to_same.html");
3724 TestSameDocumentWebFrameClient client; 3746 TestSameDocumentWebFrameClient client;
3725 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "navigate_to_ same.html", true, &client); 3747 initializeWebViewAndLoad(m_baseURL + "navigate_to_same.html", true, &client) ;
3726 EXPECT_FALSE(client.frameLoadTypeSameSeen()); 3748 EXPECT_FALSE(client.frameLoadTypeSameSeen());
3727 3749
3728 WebCore::FrameLoadRequest frameRequest(0, WebCore::ResourceRequest(webViewIm pl()->page()->mainFrame()->document()->url())); 3750 WebCore::FrameLoadRequest frameRequest(0, WebCore::ResourceRequest(webViewIm pl()->page()->mainFrame()->document()->url()));
3729 webViewImpl()->page()->mainFrame()->loader()->load(frameRequest); 3751 webViewImpl()->page()->mainFrame()->loader()->load(frameRequest);
3730 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 3752 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
3731 3753
3732 EXPECT_TRUE(client.frameLoadTypeSameSeen()); 3754 EXPECT_TRUE(client.frameLoadTypeSameSeen());
3733 m_webView->close(); 3755 m_webView->close();
3734 m_webView = 0; 3756 m_webView = 0;
3735 } 3757 }
3736 3758
3737 TEST_F(WebFrameTest, WebNodeImageContents) 3759 TEST_F(WebFrameTest, WebNodeImageContents)
3738 { 3760 {
3739 m_webView = FrameTestHelpers::createWebViewAndLoad("about:blank", true); 3761 initializeWebViewAndLoad("about:blank", true);
3740 WebFrame* frame = m_webView->mainFrame(); 3762 WebFrame* frame = m_webView->mainFrame();
3741 3763
3742 static const char bluePNG[] = "<img src=\"data:image/png;base64,iVBORw0KGgoA AAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkYPj/n4EIwDiqEF8oUT94AFIQE/cCn90I AAAAAElFTkSuQmCC\">"; 3764 static const char bluePNG[] = "<img src=\"data:image/png;base64,iVBORw0KGgoA AAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkYPj/n4EIwDiqEF8oUT94AFIQE/cCn90I AAAAAElFTkSuQmCC\">";
3743 3765
3744 // Load up the image and test that we can extract the contents. 3766 // Load up the image and test that we can extract the contents.
3745 WebCore::KURL testURL = toKURL("about:blank"); 3767 WebCore::KURL testURL = toKURL("about:blank");
3746 frame->loadHTMLString(bluePNG, testURL); 3768 frame->loadHTMLString(bluePNG, testURL);
3747 runPendingTasks(); 3769 runPendingTasks();
3748 3770
3749 WebNode node = frame->document().body().firstChild(); 3771 WebNode node = frame->document().body().firstChild();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
3783 3805
3784 private: 3806 private:
3785 int m_startLoadingCount; 3807 int m_startLoadingCount;
3786 int m_stopLoadingCount; 3808 int m_stopLoadingCount;
3787 }; 3809 };
3788 3810
3789 TEST_F(WebFrameTest, PushStateStartsAndStops) 3811 TEST_F(WebFrameTest, PushStateStartsAndStops)
3790 { 3812 {
3791 registerMockedHttpURLLoad("push_state.html"); 3813 registerMockedHttpURLLoad("push_state.html");
3792 TestStartStopCallbackWebViewClient client; 3814 TestStartStopCallbackWebViewClient client;
3793 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "push_state.h tml", true, 0, &client); 3815 initializeWebViewAndLoad(m_baseURL + "push_state.html", true, 0, &client);
3794 runPendingTasks(); 3816 runPendingTasks();
3795 3817
3796 EXPECT_EQ(client.startLoadingCount(), 2); 3818 EXPECT_EQ(client.startLoadingCount(), 2);
3797 EXPECT_EQ(client.stopLoadingCount(), 2); 3819 EXPECT_EQ(client.stopLoadingCount(), 2);
3798 m_webView->close(); 3820 m_webView->close();
3799 m_webView = 0; 3821 m_webView = 0;
3800 } 3822 }
3801 3823
3802 } // namespace 3824 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698