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

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

Issue 2258523006: Convert Settings::rootLayerScrolls to RuntimeEnabledFeatures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase & fix mistake Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 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 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 Element* element = frame->frame()->document()->getElementById(id); 274 Element* element = frame->frame()->document()->getElementById(id);
275 DCHECK(element); 275 DCHECK(element);
276 element->remove(); 276 element->remove();
277 } 277 }
278 278
279 std::string m_baseURL; 279 std::string m_baseURL;
280 std::string m_notBaseURL; 280 std::string m_notBaseURL;
281 std::string m_chromeURL; 281 std::string m_chromeURL;
282 }; 282 };
283 283
284 typedef bool TestParamRootLayerScrolling;
284 class ParameterizedWebFrameTest 285 class ParameterizedWebFrameTest
285 : public WebFrameTest 286 : public WebFrameTest
286 , public ::testing::WithParamInterface<FrameTestHelpers::SettingOverrideFunc tion> 287 , public ::testing::WithParamInterface<TestParamRootLayerScrolling> {
287 , public FrameTestHelpers::SettingOverrider {
288 public: 288 public:
289 ParameterizedWebFrameTest()
290 : m_originalRootLayerScrollingEnabled(RuntimeEnabledFeatures::rootLayerS crollingEnabled())
291 , m_enableRootLayerScrolling(GetParam())
292 {
293 RuntimeEnabledFeatures::setRootLayerScrollingEnabled(m_enableRootLayerSc rolling);
294 }
289 295
290 void overrideSettings(WebSettings *settings) override 296 ~ParameterizedWebFrameTest()
291 { 297 {
292 GetParam()(settings); 298 CHECK_EQ(m_enableRootLayerScrolling, RuntimeEnabledFeatures::rootLayerSc rollingEnabled());
299 RuntimeEnabledFeatures::setRootLayerScrollingEnabled(m_originalRootLayer ScrollingEnabled);
293 } 300 }
301
302 private:
303 bool m_originalRootLayerScrollingEnabled;
304 bool m_enableRootLayerScrolling;
294 }; 305 };
295 306
296 INSTANTIATE_TEST_CASE_P(All, ParameterizedWebFrameTest, ::testing::Values( 307 INSTANTIATE_TEST_CASE_P(All, ParameterizedWebFrameTest, ::testing::Bool());
297 FrameTestHelpers::DefaultSettingOverride,
298 FrameTestHelpers::RootLayerScrollsSettingOverride));
299 308
300 TEST_P(ParameterizedWebFrameTest, ContentText) 309 TEST_P(ParameterizedWebFrameTest, ContentText)
301 { 310 {
302 registerMockedHttpURLLoad("iframes_test.html"); 311 registerMockedHttpURLLoad("iframes_test.html");
303 registerMockedHttpURLLoad("visible_iframe.html"); 312 registerMockedHttpURLLoad("visible_iframe.html");
304 registerMockedHttpURLLoad("invisible_iframe.html"); 313 registerMockedHttpURLLoad("invisible_iframe.html");
305 registerMockedHttpURLLoad("zero_sized_iframe.html"); 314 registerMockedHttpURLLoad("zero_sized_iframe.html");
306 315
307 FrameTestHelpers::WebViewHelper webViewHelper(this); 316 FrameTestHelpers::WebViewHelper webViewHelper;
308 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html"); 317 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html");
309 318
310 // Now retrieve the frames text and test it only includes visible elements. 319 // Now retrieve the frames text and test it only includes visible elements.
311 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8(); 320 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8();
312 EXPECT_NE(std::string::npos, content.find(" visible paragraph")); 321 EXPECT_NE(std::string::npos, content.find(" visible paragraph"));
313 EXPECT_NE(std::string::npos, content.find(" visible iframe")); 322 EXPECT_NE(std::string::npos, content.find(" visible iframe"));
314 EXPECT_EQ(std::string::npos, content.find(" invisible pararaph")); 323 EXPECT_EQ(std::string::npos, content.find(" invisible pararaph"));
315 EXPECT_EQ(std::string::npos, content.find(" invisible iframe")); 324 EXPECT_EQ(std::string::npos, content.find(" invisible iframe"));
316 EXPECT_EQ(std::string::npos, content.find("iframe with zero size")); 325 EXPECT_EQ(std::string::npos, content.find("iframe with zero size"));
317 } 326 }
318 327
319 TEST_P(ParameterizedWebFrameTest, FrameForEnteredContext) 328 TEST_P(ParameterizedWebFrameTest, FrameForEnteredContext)
320 { 329 {
321 registerMockedHttpURLLoad("iframes_test.html"); 330 registerMockedHttpURLLoad("iframes_test.html");
322 registerMockedHttpURLLoad("visible_iframe.html"); 331 registerMockedHttpURLLoad("visible_iframe.html");
323 registerMockedHttpURLLoad("invisible_iframe.html"); 332 registerMockedHttpURLLoad("invisible_iframe.html");
324 registerMockedHttpURLLoad("zero_sized_iframe.html"); 333 registerMockedHttpURLLoad("zero_sized_iframe.html");
325 334
326 FrameTestHelpers::WebViewHelper webViewHelper(this); 335 FrameTestHelpers::WebViewHelper webViewHelper;
327 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html", true); 336 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html", true);
328 337
329 v8::HandleScope scope(v8::Isolate::GetCurrent()); 338 v8::HandleScope scope(v8::Isolate::GetCurrent());
330 EXPECT_EQ(webViewHelper.webView()->mainFrame(), WebLocalFrame::frameForConte xt(webViewHelper.webView()->mainFrame()->mainWorldScriptContext())); 339 EXPECT_EQ(webViewHelper.webView()->mainFrame(), WebLocalFrame::frameForConte xt(webViewHelper.webView()->mainFrame()->mainWorldScriptContext()));
331 EXPECT_EQ(webViewHelper.webView()->mainFrame()->firstChild(), WebLocalFrame: :frameForContext(webViewHelper.webView()->mainFrame()->firstChild()->mainWorldSc riptContext())); 340 EXPECT_EQ(webViewHelper.webView()->mainFrame()->firstChild(), WebLocalFrame: :frameForContext(webViewHelper.webView()->mainFrame()->firstChild()->mainWorldSc riptContext()));
332 } 341 }
333 342
334 class ScriptExecutionCallbackHelper : public WebScriptExecutionCallback { 343 class ScriptExecutionCallbackHelper : public WebScriptExecutionCallback {
335 public: 344 public:
336 explicit ScriptExecutionCallbackHelper(v8::Local<v8::Context> context) 345 explicit ScriptExecutionCallbackHelper(v8::Local<v8::Context> context)
(...skipping 15 matching lines...) Expand all
352 361
353 bool m_didComplete; 362 bool m_didComplete;
354 String m_stringValue; 363 String m_stringValue;
355 v8::Local<v8::Context> m_context; 364 v8::Local<v8::Context> m_context;
356 }; 365 };
357 366
358 TEST_P(ParameterizedWebFrameTest, RequestExecuteScript) 367 TEST_P(ParameterizedWebFrameTest, RequestExecuteScript)
359 { 368 {
360 registerMockedHttpURLLoad("foo.html"); 369 registerMockedHttpURLLoad("foo.html");
361 370
362 FrameTestHelpers::WebViewHelper webViewHelper(this); 371 FrameTestHelpers::WebViewHelper webViewHelper;
363 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true); 372 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true);
364 373
365 v8::HandleScope scope(v8::Isolate::GetCurrent()); 374 v8::HandleScope scope(v8::Isolate::GetCurrent());
366 ScriptExecutionCallbackHelper callbackHelper(webViewHelper.webView()->mainFr ame()->mainWorldScriptContext()); 375 ScriptExecutionCallbackHelper callbackHelper(webViewHelper.webView()->mainFr ame()->mainWorldScriptContext());
367 webViewHelper.webView()->mainFrame()->toWebLocalFrame()->requestExecuteScrip tAndReturnValue(WebScriptSource(WebString("'hello';")), false, &callbackHelper); 376 webViewHelper.webView()->mainFrame()->toWebLocalFrame()->requestExecuteScrip tAndReturnValue(WebScriptSource(WebString("'hello';")), false, &callbackHelper);
368 runPendingTasks(); 377 runPendingTasks();
369 EXPECT_TRUE(callbackHelper.didComplete()); 378 EXPECT_TRUE(callbackHelper.didComplete());
370 EXPECT_EQ("hello", callbackHelper.stringValue()); 379 EXPECT_EQ("hello", callbackHelper.stringValue());
371 } 380 }
372 381
373 TEST_P(ParameterizedWebFrameTest, SuspendedRequestExecuteScript) 382 TEST_P(ParameterizedWebFrameTest, SuspendedRequestExecuteScript)
374 { 383 {
375 registerMockedHttpURLLoad("foo.html"); 384 registerMockedHttpURLLoad("foo.html");
376 registerMockedHttpURLLoad("bar.html"); 385 registerMockedHttpURLLoad("bar.html");
377 386
378 FrameTestHelpers::WebViewHelper webViewHelper(this); 387 FrameTestHelpers::WebViewHelper webViewHelper;
379 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true); 388 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true);
380 389
381 v8::HandleScope scope(v8::Isolate::GetCurrent()); 390 v8::HandleScope scope(v8::Isolate::GetCurrent());
382 ScriptExecutionCallbackHelper callbackHelper(webViewHelper.webView()->mainFr ame()->mainWorldScriptContext()); 391 ScriptExecutionCallbackHelper callbackHelper(webViewHelper.webView()->mainFr ame()->mainWorldScriptContext());
383 392
384 // Suspend scheduled tasks so the script doesn't run. 393 // Suspend scheduled tasks so the script doesn't run.
385 webViewHelper.webView()->mainFrameImpl()->frame()->document()->suspendSchedu ledTasks(); 394 webViewHelper.webView()->mainFrameImpl()->frame()->document()->suspendSchedu ledTasks();
386 webViewHelper.webView()->mainFrameImpl()->requestExecuteScriptAndReturnValue (WebScriptSource(WebString("'hello';")), false, &callbackHelper); 395 webViewHelper.webView()->mainFrameImpl()->requestExecuteScriptAndReturnValue (WebScriptSource(WebString("'hello';")), false, &callbackHelper);
387 runPendingTasks(); 396 runPendingTasks();
388 EXPECT_FALSE(callbackHelper.didComplete()); 397 EXPECT_FALSE(callbackHelper.didComplete());
389 398
390 // If the frame navigates, pending scripts should be removed, but the callba ck should always be ran. 399 // If the frame navigates, pending scripts should be removed, but the callba ck should always be ran.
391 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "bar.html"); 400 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "bar.html");
392 EXPECT_TRUE(callbackHelper.didComplete()); 401 EXPECT_TRUE(callbackHelper.didComplete());
393 EXPECT_EQ(String(), callbackHelper.stringValue()); 402 EXPECT_EQ(String(), callbackHelper.stringValue());
394 } 403 }
395 404
396 TEST_P(ParameterizedWebFrameTest, IframeScriptRemovesSelf) 405 TEST_P(ParameterizedWebFrameTest, IframeScriptRemovesSelf)
397 { 406 {
398 registerMockedHttpURLLoad("single_iframe.html"); 407 registerMockedHttpURLLoad("single_iframe.html");
399 registerMockedHttpURLLoad("visible_iframe.html"); 408 registerMockedHttpURLLoad("visible_iframe.html");
400 409
401 FrameTestHelpers::WebViewHelper webViewHelper(this); 410 FrameTestHelpers::WebViewHelper webViewHelper;
402 webViewHelper.initializeAndLoad(m_baseURL + "single_iframe.html", true); 411 webViewHelper.initializeAndLoad(m_baseURL + "single_iframe.html", true);
403 412
404 v8::HandleScope scope(v8::Isolate::GetCurrent()); 413 v8::HandleScope scope(v8::Isolate::GetCurrent());
405 ScriptExecutionCallbackHelper callbackHelper(webViewHelper.webView()->mainFr ame()->mainWorldScriptContext()); 414 ScriptExecutionCallbackHelper callbackHelper(webViewHelper.webView()->mainFr ame()->mainWorldScriptContext());
406 webViewHelper.webView()->mainFrame()->firstChild()->toWebLocalFrame()->reque stExecuteScriptAndReturnValue(WebScriptSource(WebString("var iframe = window.top .document.getElementsByTagName('iframe')[0]; window.top.document.body.removeChil d(iframe); 'hello';")), false, &callbackHelper); 415 webViewHelper.webView()->mainFrame()->firstChild()->toWebLocalFrame()->reque stExecuteScriptAndReturnValue(WebScriptSource(WebString("var iframe = window.top .document.getElementsByTagName('iframe')[0]; window.top.document.body.removeChil d(iframe); 'hello';")), false, &callbackHelper);
407 runPendingTasks(); 416 runPendingTasks();
408 EXPECT_TRUE(callbackHelper.didComplete()); 417 EXPECT_TRUE(callbackHelper.didComplete());
409 EXPECT_EQ(String(), callbackHelper.stringValue()); 418 EXPECT_EQ(String(), callbackHelper.stringValue());
410 } 419 }
411 420
412 TEST_P(ParameterizedWebFrameTest, FormWithNullFrame) 421 TEST_P(ParameterizedWebFrameTest, FormWithNullFrame)
413 { 422 {
414 registerMockedHttpURLLoad("form.html"); 423 registerMockedHttpURLLoad("form.html");
415 424
416 FrameTestHelpers::WebViewHelper webViewHelper(this); 425 FrameTestHelpers::WebViewHelper webViewHelper;
417 webViewHelper.initializeAndLoad(m_baseURL + "form.html"); 426 webViewHelper.initializeAndLoad(m_baseURL + "form.html");
418 427
419 WebVector<WebFormElement> forms; 428 WebVector<WebFormElement> forms;
420 webViewHelper.webView()->mainFrame()->document().forms(forms); 429 webViewHelper.webView()->mainFrame()->document().forms(forms);
421 webViewHelper.reset(); 430 webViewHelper.reset();
422 431
423 EXPECT_EQ(forms.size(), 1U); 432 EXPECT_EQ(forms.size(), 1U);
424 433
425 // This test passes if this doesn't crash. 434 // This test passes if this doesn't crash.
426 WebSearchableFormData searchableDataForm(forms[0]); 435 WebSearchableFormData searchableDataForm(forms[0]);
427 } 436 }
428 437
429 TEST_P(ParameterizedWebFrameTest, ChromePageJavascript) 438 TEST_P(ParameterizedWebFrameTest, ChromePageJavascript)
430 { 439 {
431 registerMockedChromeURLLoad("history.html"); 440 registerMockedChromeURLLoad("history.html");
432 441
433 // Pass true to enable JavaScript. 442 // Pass true to enable JavaScript.
434 FrameTestHelpers::WebViewHelper webViewHelper(this); 443 FrameTestHelpers::WebViewHelper webViewHelper;
435 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true); 444 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true);
436 445
437 // Try to run JS against the chrome-style URL. 446 // Try to run JS against the chrome-style URL.
438 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))"); 447 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))");
439 448
440 // Now retrieve the frame's text and ensure it was modified by running javas cript. 449 // Now retrieve the frame's text and ensure it was modified by running javas cript.
441 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8(); 450 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8();
442 EXPECT_NE(std::string::npos, content.find("Clobbered")); 451 EXPECT_NE(std::string::npos, content.find("Clobbered"));
443 } 452 }
444 453
445 TEST_P(ParameterizedWebFrameTest, ChromePageNoJavascript) 454 TEST_P(ParameterizedWebFrameTest, ChromePageNoJavascript)
446 { 455 {
447 registerMockedChromeURLLoad("history.html"); 456 registerMockedChromeURLLoad("history.html");
448 457
449 /// Pass true to enable JavaScript. 458 /// Pass true to enable JavaScript.
450 FrameTestHelpers::WebViewHelper webViewHelper(this); 459 FrameTestHelpers::WebViewHelper webViewHelper;
451 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true); 460 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true);
452 461
453 // Try to run JS against the chrome-style URL after prohibiting it. 462 // Try to run JS against the chrome-style URL after prohibiting it.
454 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs("chrome"); 463 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs("chrome");
455 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))"); 464 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))");
456 465
457 // Now retrieve the frame's text and ensure it wasn't modified by running ja vascript. 466 // Now retrieve the frame's text and ensure it wasn't modified by running ja vascript.
458 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8(); 467 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8();
459 EXPECT_EQ(std::string::npos, content.find("Clobbered")); 468 EXPECT_EQ(std::string::npos, content.find("Clobbered"));
460 } 469 }
461 470
462 TEST_P(ParameterizedWebFrameTest, LocationSetHostWithMissingPort) 471 TEST_P(ParameterizedWebFrameTest, LocationSetHostWithMissingPort)
463 { 472 {
464 std::string fileName = "print-location-href.html"; 473 std::string fileName = "print-location-href.html";
465 registerMockedHttpURLLoad(fileName); 474 registerMockedHttpURLLoad(fileName);
466 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName)); 475 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName));
467 476
468 FrameTestHelpers::WebViewHelper webViewHelper(this); 477 FrameTestHelpers::WebViewHelper webViewHelper;
469 478
470 /// Pass true to enable JavaScript. 479 /// Pass true to enable JavaScript.
471 webViewHelper.initializeAndLoad(m_baseURL + fileName, true); 480 webViewHelper.initializeAndLoad(m_baseURL + fileName, true);
472 481
473 // Setting host to "hostname:" should be treated as "hostname:0". 482 // Setting host to "hostname:" should be treated as "hostname:0".
474 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:location.host = 'internal.test:'; void 0;"); 483 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:location.host = 'internal.test:'; void 0;");
475 484
476 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.textContent = location.href; void 0;"); 485 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.textContent = location.href; void 0;");
477 486
478 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8(); 487 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8();
479 EXPECT_EQ("http://internal.test:0/" + fileName, content); 488 EXPECT_EQ("http://internal.test:0/" + fileName, content);
480 } 489 }
481 490
482 TEST_P(ParameterizedWebFrameTest, LocationSetEmptyPort) 491 TEST_P(ParameterizedWebFrameTest, LocationSetEmptyPort)
483 { 492 {
484 std::string fileName = "print-location-href.html"; 493 std::string fileName = "print-location-href.html";
485 registerMockedHttpURLLoad(fileName); 494 registerMockedHttpURLLoad(fileName);
486 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName)); 495 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName));
487 496
488 FrameTestHelpers::WebViewHelper webViewHelper(this); 497 FrameTestHelpers::WebViewHelper webViewHelper;
489 498
490 /// Pass true to enable JavaScript. 499 /// Pass true to enable JavaScript.
491 webViewHelper.initializeAndLoad(m_baseURL + fileName, true); 500 webViewHelper.initializeAndLoad(m_baseURL + fileName, true);
492 501
493 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:location.port = ''; void 0;"); 502 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:location.port = ''; void 0;");
494 503
495 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.textContent = location.href; void 0;"); 504 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.textContent = location.href; void 0;");
496 505
497 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8(); 506 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8();
498 EXPECT_EQ("http://internal.test:0/" + fileName, content); 507 EXPECT_EQ("http://internal.test:0/" + fileName, content);
(...skipping 13 matching lines...) Expand all
512 m_executing = false; 521 m_executing = false;
513 } 522 }
514 523
515 bool m_executing; 524 bool m_executing;
516 bool m_wasExecuted; 525 bool m_wasExecuted;
517 }; 526 };
518 527
519 TEST_P(ParameterizedWebFrameTest, DidClearWindowObjectIsNotRecursive) 528 TEST_P(ParameterizedWebFrameTest, DidClearWindowObjectIsNotRecursive)
520 { 529 {
521 EvaluateOnLoadWebFrameClient webFrameClient; 530 EvaluateOnLoadWebFrameClient webFrameClient;
522 FrameTestHelpers::WebViewHelper webViewHelper(this); 531 FrameTestHelpers::WebViewHelper webViewHelper;
523 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient); 532 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient);
524 EXPECT_TRUE(webFrameClient.m_wasExecuted); 533 EXPECT_TRUE(webFrameClient.m_wasExecuted);
525 } 534 }
526 535
527 class CSSCallbackWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 536 class CSSCallbackWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
528 public: 537 public:
529 CSSCallbackWebFrameClient() : m_updateCount(0) { } 538 CSSCallbackWebFrameClient() : m_updateCount(0) { }
530 void didMatchCSS(WebLocalFrame*, const WebVector<WebString>& newlyMatchingSe lectors, const WebVector<WebString>& stoppedMatchingSelectors) override; 539 void didMatchCSS(WebLocalFrame*, const WebVector<WebString>& newlyMatchingSe lectors, const WebVector<WebString>& stoppedMatchingSelectors) override;
531 540
532 std::map<WebLocalFrame*, std::set<std::string>> m_matchedSelectors; 541 std::map<WebLocalFrame*, std::set<std::string>> m_matchedSelectors;
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 EXPECT_EQ(1, updateCount()); 798 EXPECT_EQ(1, updateCount());
790 EXPECT_THAT(matchedSelectors(), ElementsAre("span")) 799 EXPECT_THAT(matchedSelectors(), ElementsAre("span"))
791 << "An invalid selector shouldn't prevent other selectors from matching. "; 800 << "An invalid selector shouldn't prevent other selectors from matching. ";
792 } 801 }
793 802
794 TEST_P(ParameterizedWebFrameTest, DispatchMessageEventWithOriginCheck) 803 TEST_P(ParameterizedWebFrameTest, DispatchMessageEventWithOriginCheck)
795 { 804 {
796 registerMockedHttpURLLoad("postmessage_test.html"); 805 registerMockedHttpURLLoad("postmessage_test.html");
797 806
798 // Pass true to enable JavaScript. 807 // Pass true to enable JavaScript.
799 FrameTestHelpers::WebViewHelper webViewHelper(this); 808 FrameTestHelpers::WebViewHelper webViewHelper;
800 webViewHelper.initializeAndLoad(m_baseURL + "postmessage_test.html", true); 809 webViewHelper.initializeAndLoad(m_baseURL + "postmessage_test.html", true);
801 810
802 // Send a message with the correct origin. 811 // Send a message with the correct origin.
803 WebSecurityOrigin correctOrigin(WebSecurityOrigin::create(toKURL(m_baseURL)) ); 812 WebSecurityOrigin correctOrigin(WebSecurityOrigin::create(toKURL(m_baseURL)) );
804 WebDocument document = webViewHelper.webView()->mainFrame()->document(); 813 WebDocument document = webViewHelper.webView()->mainFrame()->document();
805 WebSerializedScriptValue data(WebSerializedScriptValue::fromString("foo")); 814 WebSerializedScriptValue data(WebSerializedScriptValue::fromString("foo"));
806 WebDOMMessageEvent message(data, "http://origin.com"); 815 WebDOMMessageEvent message(data, "http://origin.com");
807 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(co rrectOrigin, message); 816 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(co rrectOrigin, message);
808 817
809 // Send another message with incorrect origin. 818 // Send another message with incorrect origin.
810 WebSecurityOrigin incorrectOrigin(WebSecurityOrigin::create(toKURL(m_chromeU RL))); 819 WebSecurityOrigin incorrectOrigin(WebSecurityOrigin::create(toKURL(m_chromeU RL)));
811 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(in correctOrigin, message); 820 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(in correctOrigin, message);
812 821
813 // Verify that only the first addition is in the body of the page. 822 // Verify that only the first addition is in the body of the page.
814 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8(); 823 std::string content = WebFrameContentDumper::dumpWebViewAsText(webViewHelper .webView(), 1024).utf8();
815 EXPECT_NE(std::string::npos, content.find("Message 1.")); 824 EXPECT_NE(std::string::npos, content.find("Message 1."));
816 EXPECT_EQ(std::string::npos, content.find("Message 2.")); 825 EXPECT_EQ(std::string::npos, content.find("Message 2."));
817 } 826 }
818 827
819 TEST_P(ParameterizedWebFrameTest, PostMessageThenDetach) 828 TEST_P(ParameterizedWebFrameTest, PostMessageThenDetach)
820 { 829 {
821 FrameTestHelpers::WebViewHelper webViewHelper(this); 830 FrameTestHelpers::WebViewHelper webViewHelper;
822 webViewHelper.initializeAndLoad("about:blank"); 831 webViewHelper.initializeAndLoad("about:blank");
823 832
824 LocalFrame* frame = toLocalFrame(webViewHelper.webView()->page()->mainFrame( )); 833 LocalFrame* frame = toLocalFrame(webViewHelper.webView()->page()->mainFrame( ));
825 NonThrowableExceptionState exceptionState; 834 NonThrowableExceptionState exceptionState;
826 MessagePortArray messagePorts; 835 MessagePortArray messagePorts;
827 frame->domWindow()->postMessage(SerializedScriptValue::serialize("message"), messagePorts, "*", frame->localDOMWindow(), exceptionState); 836 frame->domWindow()->postMessage(SerializedScriptValue::serialize("message"), messagePorts, "*", frame->localDOMWindow(), exceptionState);
828 webViewHelper.reset(); 837 webViewHelper.reset();
829 EXPECT_FALSE(exceptionState.hadException()); 838 EXPECT_FALSE(exceptionState.hadException());
830 839
831 // Success is not crashing. 840 // Success is not crashing.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 } // anonymous namespace 893 } // anonymous namespace
885 894
886 TEST_P(ParameterizedWebFrameTest, ChangeInFixedLayoutResetsTextAutosizingMultipl iers) 895 TEST_P(ParameterizedWebFrameTest, ChangeInFixedLayoutResetsTextAutosizingMultipl iers)
887 { 896 {
888 registerMockedHttpURLLoad("fixed_layout.html"); 897 registerMockedHttpURLLoad("fixed_layout.html");
889 898
890 FixedLayoutTestWebViewClient client; 899 FixedLayoutTestWebViewClient client;
891 int viewportWidth = 640; 900 int viewportWidth = 640;
892 int viewportHeight = 480; 901 int viewportHeight = 480;
893 902
894 FrameTestHelpers::WebViewHelper webViewHelper(this); 903 FrameTestHelpers::WebViewHelper webViewHelper;
895 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 904 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
896 905
897 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document(); 906 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document();
898 document->settings()->setTextAutosizingEnabled(true); 907 document->settings()->setTextAutosizingEnabled(true);
899 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 908 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
900 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 909 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
901 910
902 EXPECT_TRUE(setTextAutosizingMultiplier(document, 2)); 911 EXPECT_TRUE(setTextAutosizingMultiplier(document, 2));
903 912
904 ViewportDescription description = document->viewportDescription(); 913 ViewportDescription description = document->viewportDescription();
905 // Choose a width that's not going match the viewport width of the loaded do cument. 914 // Choose a width that's not going match the viewport width of the loaded do cument.
906 description.minWidth = Length(100, blink::Fixed); 915 description.minWidth = Length(100, blink::Fixed);
907 description.maxWidth = Length(100, blink::Fixed); 916 description.maxWidth = Length(100, blink::Fixed);
908 webViewHelper.webView()->updatePageDefinedViewportConstraints(description); 917 webViewHelper.webView()->updatePageDefinedViewportConstraints(description);
909 918
910 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 1)); 919 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 1));
911 } 920 }
912 921
913 TEST_P(ParameterizedWebFrameTest, WorkingTextAutosizingMultipliers_VirtualViewpo rt) 922 TEST_P(ParameterizedWebFrameTest, WorkingTextAutosizingMultipliers_VirtualViewpo rt)
914 { 923 {
915 const std::string htmlFile = "fixed_layout.html"; 924 const std::string htmlFile = "fixed_layout.html";
916 registerMockedHttpURLLoad(htmlFile); 925 registerMockedHttpURLLoad(htmlFile);
917 926
918 FixedLayoutTestWebViewClient client; 927 FixedLayoutTestWebViewClient client;
919 928
920 FrameTestHelpers::WebViewHelper webViewHelper(this); 929 FrameTestHelpers::WebViewHelper webViewHelper;
921 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, nullptr, &client , nullptr, configureAndroid); 930 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, nullptr, &client , nullptr, configureAndroid);
922 931
923 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document(); 932 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document();
924 document->settings()->setTextAutosizingEnabled(true); 933 document->settings()->setTextAutosizingEnabled(true);
925 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 934 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
926 935
927 webViewHelper.resize(WebSize(490, 800)); 936 webViewHelper.resize(WebSize(490, 800));
928 937
929 // Multiplier: 980 / 490 = 2.0 938 // Multiplier: 980 / 490 = 2.0
930 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 2.0)); 939 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 2.0));
931 } 940 }
932 941
933 TEST_P(ParameterizedWebFrameTest, VisualViewportSetSizeInvalidatesTextAutosizing Multipliers) 942 TEST_P(ParameterizedWebFrameTest, VisualViewportSetSizeInvalidatesTextAutosizing Multipliers)
934 { 943 {
935 registerMockedHttpURLLoad("iframe_reload.html"); 944 registerMockedHttpURLLoad("iframe_reload.html");
936 registerMockedHttpURLLoad("visible_iframe.html"); 945 registerMockedHttpURLLoad("visible_iframe.html");
937 946
938 FixedLayoutTestWebViewClient client; 947 FixedLayoutTestWebViewClient client;
939 int viewportWidth = 640; 948 int viewportWidth = 640;
940 int viewportHeight = 480; 949 int viewportHeight = 480;
941 950
942 FrameTestHelpers::WebViewHelper webViewHelper(this); 951 FrameTestHelpers::WebViewHelper webViewHelper;
943 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, null ptr, &client, nullptr, enableViewportSettings); 952 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, null ptr, &client, nullptr, enableViewportSettings);
944 953
945 LocalFrame* mainFrame = toLocalFrame(webViewHelper.webView()->page()->mainFr ame()); 954 LocalFrame* mainFrame = toLocalFrame(webViewHelper.webView()->page()->mainFr ame());
946 Document* document = mainFrame->document(); 955 Document* document = mainFrame->document();
947 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView() ; 956 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView() ;
948 document->settings()->setTextAutosizingEnabled(true); 957 document->settings()->setTextAutosizingEnabled(true);
949 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 958 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
950 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 959 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
951 960
952 for (Frame* frame = mainFrame; frame; frame = frame->tree().traverseNext()) { 961 for (Frame* frame = mainFrame; frame; frame = frame->tree().traverseNext()) {
(...skipping 18 matching lines...) Expand all
971 } 980 }
972 } 981 }
973 982
974 TEST_P(ParameterizedWebFrameTest, ZeroHeightPositiveWidthNotIgnored) 983 TEST_P(ParameterizedWebFrameTest, ZeroHeightPositiveWidthNotIgnored)
975 { 984 {
976 FixedLayoutTestWebViewClient client; 985 FixedLayoutTestWebViewClient client;
977 client.m_screenInfo.deviceScaleFactor = 1; 986 client.m_screenInfo.deviceScaleFactor = 1;
978 int viewportWidth = 1280; 987 int viewportWidth = 1280;
979 int viewportHeight = 0; 988 int viewportHeight = 0;
980 989
981 FrameTestHelpers::WebViewHelper webViewHelper(this); 990 FrameTestHelpers::WebViewHelper webViewHelper;
982 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 991 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
983 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 992 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
984 993
985 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->layoutSize().width()); 994 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->layoutSize().width());
986 EXPECT_EQ(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->layoutSize().height()); 995 EXPECT_EQ(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->layoutSize().height());
987 } 996 }
988 997
989 TEST_P(ParameterizedWebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag ) 998 TEST_P(ParameterizedWebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag )
990 { 999 {
991 registerMockedHttpURLLoad("no_viewport_tag.html"); 1000 registerMockedHttpURLLoad("no_viewport_tag.html");
992 1001
993 int viewportWidth = 640; 1002 int viewportWidth = 640;
994 int viewportHeight = 480; 1003 int viewportHeight = 480;
995 1004
996 FixedLayoutTestWebViewClient client; 1005 FixedLayoutTestWebViewClient client;
997 client.m_screenInfo.deviceScaleFactor = 2; 1006 client.m_screenInfo.deviceScaleFactor = 2;
998 1007
999 FrameTestHelpers::WebViewHelper webViewHelper(this); 1008 FrameTestHelpers::WebViewHelper webViewHelper;
1000 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, nu llptr, &client, nullptr, enableViewportSettings); 1009 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, nu llptr, &client, nullptr, enableViewportSettings);
1001 1010
1002 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1011 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1003 1012
1004 EXPECT_EQ(2, webViewHelper.webView()->page()->deviceScaleFactor()); 1013 EXPECT_EQ(2, webViewHelper.webView()->page()->deviceScaleFactor());
1005 1014
1006 // Device scale factor should be independent of page scale. 1015 // Device scale factor should be independent of page scale.
1007 webViewHelper.webView()->setDefaultPageScaleLimits(1, 2); 1016 webViewHelper.webView()->setDefaultPageScaleLimits(1, 2);
1008 webViewHelper.webView()->setPageScaleFactor(0.5); 1017 webViewHelper.webView()->setPageScaleFactor(0.5);
1009 webViewHelper.webView()->updateAllLifecyclePhases(); 1018 webViewHelper.webView()->updateAllLifecyclePhases();
1010 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor()); 1019 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor());
1011 1020
1012 // Force the layout to happen before leaving the test. 1021 // Force the layout to happen before leaving the test.
1013 webViewHelper.webView()->updateAllLifecyclePhases(); 1022 webViewHelper.webView()->updateAllLifecyclePhases();
1014 } 1023 }
1015 1024
1016 TEST_P(ParameterizedWebFrameTest, FixedLayoutInitializeAtMinimumScale) 1025 TEST_P(ParameterizedWebFrameTest, FixedLayoutInitializeAtMinimumScale)
1017 { 1026 {
1018 registerMockedHttpURLLoad("fixed_layout.html"); 1027 registerMockedHttpURLLoad("fixed_layout.html");
1019 1028
1020 FixedLayoutTestWebViewClient client; 1029 FixedLayoutTestWebViewClient client;
1021 client.m_screenInfo.deviceScaleFactor = 1; 1030 client.m_screenInfo.deviceScaleFactor = 1;
1022 int viewportWidth = 640; 1031 int viewportWidth = 640;
1023 int viewportHeight = 480; 1032 int viewportHeight = 480;
1024 1033
1025 // Make sure we initialize to minimum scale, even if the window size 1034 // Make sure we initialize to minimum scale, even if the window size
1026 // only becomes available after the load begins. 1035 // only becomes available after the load begins.
1027 FrameTestHelpers::WebViewHelper webViewHelper(this); 1036 FrameTestHelpers::WebViewHelper webViewHelper;
1028 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 1037 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
1029 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 1038 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
1030 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html"); 1039 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html");
1031 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1040 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1032 1041
1033 int defaultFixedLayoutWidth = 980; 1042 int defaultFixedLayoutWidth = 980;
1034 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th; 1043 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th;
1035 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() ); 1044 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() );
1036 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor()); 1045 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor());
1037 1046
(...skipping 16 matching lines...) Expand all
1054 { 1063 {
1055 registerMockedHttpURLLoad("wide_document.html"); 1064 registerMockedHttpURLLoad("wide_document.html");
1056 1065
1057 FixedLayoutTestWebViewClient client; 1066 FixedLayoutTestWebViewClient client;
1058 client.m_screenInfo.deviceScaleFactor = 1; 1067 client.m_screenInfo.deviceScaleFactor = 1;
1059 int viewportWidth = 640; 1068 int viewportWidth = 640;
1060 int viewportHeight = 480; 1069 int viewportHeight = 480;
1061 1070
1062 // Make sure we initialize to minimum scale, even if the window size 1071 // Make sure we initialize to minimum scale, even if the window size
1063 // only becomes available after the load begins. 1072 // only becomes available after the load begins.
1064 FrameTestHelpers::WebViewHelper webViewHelper(this); 1073 FrameTestHelpers::WebViewHelper webViewHelper;
1065 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 1074 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
1066 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 1075 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
1067 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document.html"); 1076 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document.html");
1068 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1077 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1069 1078
1070 int wideDocumentWidth = 1500; 1079 int wideDocumentWidth = 1500;
1071 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; 1080 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth;
1072 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() ); 1081 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() );
1073 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor()); 1082 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor());
1074 1083
(...skipping 14 matching lines...) Expand all
1089 1098
1090 TEST_P(ParameterizedWebFrameTest, DelayedViewportInitialScale) 1099 TEST_P(ParameterizedWebFrameTest, DelayedViewportInitialScale)
1091 { 1100 {
1092 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1101 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1093 1102
1094 FixedLayoutTestWebViewClient client; 1103 FixedLayoutTestWebViewClient client;
1095 client.m_screenInfo.deviceScaleFactor = 1; 1104 client.m_screenInfo.deviceScaleFactor = 1;
1096 int viewportWidth = 640; 1105 int viewportWidth = 640;
1097 int viewportHeight = 480; 1106 int viewportHeight = 480;
1098 1107
1099 FrameTestHelpers::WebViewHelper webViewHelper(this); 1108 FrameTestHelpers::WebViewHelper webViewHelper;
1100 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings); 1109 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings);
1101 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1110 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1102 1111
1103 EXPECT_EQ(0.25f, webViewHelper.webView()->pageScaleFactor()); 1112 EXPECT_EQ(0.25f, webViewHelper.webView()->pageScaleFactor());
1104 1113
1105 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document(); 1114 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document();
1106 ViewportDescription description = document->viewportDescription(); 1115 ViewportDescription description = document->viewportDescription();
1107 description.zoom = 2; 1116 description.zoom = 2;
1108 document->setViewportDescription(description); 1117 document->setViewportDescription(description);
1109 webViewHelper.webView()->updateAllLifecyclePhases(); 1118 webViewHelper.webView()->updateAllLifecyclePhases();
1110 EXPECT_EQ(2, webViewHelper.webView()->pageScaleFactor()); 1119 EXPECT_EQ(2, webViewHelper.webView()->pageScaleFactor());
1111 } 1120 }
1112 1121
1113 TEST_P(ParameterizedWebFrameTest, setLoadWithOverviewModeToFalse) 1122 TEST_P(ParameterizedWebFrameTest, setLoadWithOverviewModeToFalse)
1114 { 1123 {
1115 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1124 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1116 1125
1117 FixedLayoutTestWebViewClient client; 1126 FixedLayoutTestWebViewClient client;
1118 client.m_screenInfo.deviceScaleFactor = 1; 1127 client.m_screenInfo.deviceScaleFactor = 1;
1119 int viewportWidth = 640; 1128 int viewportWidth = 640;
1120 int viewportHeight = 480; 1129 int viewportHeight = 480;
1121 1130
1122 FrameTestHelpers::WebViewHelper webViewHelper(this); 1131 FrameTestHelpers::WebViewHelper webViewHelper;
1123 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings); 1132 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings);
1124 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1133 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1125 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1134 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1126 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1135 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1127 1136
1128 // The page must be displayed at 100% zoom. 1137 // The page must be displayed at 100% zoom.
1129 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1138 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1130 } 1139 }
1131 1140
1132 TEST_P(ParameterizedWebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewpor t) 1141 TEST_P(ParameterizedWebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewpor t)
1133 { 1142 {
1134 registerMockedHttpURLLoad("large-div.html"); 1143 registerMockedHttpURLLoad("large-div.html");
1135 1144
1136 FixedLayoutTestWebViewClient client; 1145 FixedLayoutTestWebViewClient client;
1137 client.m_screenInfo.deviceScaleFactor = 1; 1146 client.m_screenInfo.deviceScaleFactor = 1;
1138 int viewportWidth = 640; 1147 int viewportWidth = 640;
1139 int viewportHeight = 480; 1148 int viewportHeight = 480;
1140 1149
1141 FrameTestHelpers::WebViewHelper webViewHelper(this); 1150 FrameTestHelpers::WebViewHelper webViewHelper;
1142 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, nullptr, &client, nullptr, enableViewportSettings); 1151 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, nullptr, &client, nullptr, enableViewportSettings);
1143 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1152 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1144 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1153 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1145 webViewHelper.webView()->settings()->setUseWideViewport(false); 1154 webViewHelper.webView()->settings()->setUseWideViewport(false);
1146 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1155 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1147 1156
1148 // The page must be displayed at 100% zoom, despite that it hosts a wide div element. 1157 // The page must be displayed at 100% zoom, despite that it hosts a wide div element.
1149 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1158 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1150 } 1159 }
1151 1160
1152 TEST_P(ParameterizedWebFrameTest, NoWideViewportIgnoresPageViewportWidth) 1161 TEST_P(ParameterizedWebFrameTest, NoWideViewportIgnoresPageViewportWidth)
1153 { 1162 {
1154 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1163 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1155 1164
1156 FixedLayoutTestWebViewClient client; 1165 FixedLayoutTestWebViewClient client;
1157 client.m_screenInfo.deviceScaleFactor = 1; 1166 client.m_screenInfo.deviceScaleFactor = 1;
1158 int viewportWidth = 640; 1167 int viewportWidth = 640;
1159 int viewportHeight = 480; 1168 int viewportHeight = 480;
1160 1169
1161 FrameTestHelpers::WebViewHelper webViewHelper(this); 1170 FrameTestHelpers::WebViewHelper webViewHelper;
1162 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings); 1171 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings);
1163 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1172 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1164 webViewHelper.webView()->settings()->setUseWideViewport(false); 1173 webViewHelper.webView()->settings()->setUseWideViewport(false);
1165 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1174 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1166 1175
1167 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored. 1176 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
1168 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->contentsSize().width()); 1177 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->contentsSize().width());
1169 EXPECT_EQ(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->contentsSize().height()); 1178 EXPECT_EQ(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->contentsSize().height());
1170 } 1179 }
1171 1180
1172 TEST_P(ParameterizedWebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccou ntsScale) 1181 TEST_P(ParameterizedWebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccou ntsScale)
1173 { 1182 {
1174 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1183 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1175 1184
1176 FixedLayoutTestWebViewClient client; 1185 FixedLayoutTestWebViewClient client;
1177 client.m_screenInfo.deviceScaleFactor = 1; 1186 client.m_screenInfo.deviceScaleFactor = 1;
1178 int viewportWidth = 640; 1187 int viewportWidth = 640;
1179 int viewportHeight = 480; 1188 int viewportHeight = 480;
1180 1189
1181 FrameTestHelpers::WebViewHelper webViewHelper(this); 1190 FrameTestHelpers::WebViewHelper webViewHelper;
1182 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, nullptr, &client, nullptr, enableViewportSettings); 1191 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, nullptr, &client, nullptr, enableViewportSettings);
1183 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1192 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1184 webViewHelper.webView()->settings()->setUseWideViewport(false); 1193 webViewHelper.webView()->settings()->setUseWideViewport(false);
1185 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1194 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1186 1195
1187 // The page sets viewport width to 3000, but with UseWideViewport == false i t must be ignored. 1196 // The page sets viewport width to 3000, but with UseWideViewport == false i t must be ignored.
1188 // While the initial scale specified by the page must be accounted. 1197 // While the initial scale specified by the page must be accounted.
1189 EXPECT_EQ(viewportWidth / 2, webViewHelper.webView()->mainFrameImpl()->frame View()->contentsSize().width()); 1198 EXPECT_EQ(viewportWidth / 2, webViewHelper.webView()->mainFrameImpl()->frame View()->contentsSize().width());
1190 EXPECT_EQ(viewportHeight / 2, webViewHelper.webView()->mainFrameImpl()->fram eView()->contentsSize().height()); 1199 EXPECT_EQ(viewportHeight / 2, webViewHelper.webView()->mainFrameImpl()->fram eView()->contentsSize().height());
1191 } 1200 }
1192 1201
1193 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithoutViewportTag) 1202 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithoutViewportTag)
1194 { 1203 {
1195 registerMockedHttpURLLoad("no_viewport_tag.html"); 1204 registerMockedHttpURLLoad("no_viewport_tag.html");
1196 1205
1197 FixedLayoutTestWebViewClient client; 1206 FixedLayoutTestWebViewClient client;
1198 client.m_screenInfo.deviceScaleFactor = 1; 1207 client.m_screenInfo.deviceScaleFactor = 1;
1199 int viewportWidth = 640; 1208 int viewportWidth = 640;
1200 int viewportHeight = 480; 1209 int viewportHeight = 480;
1201 1210
1202 FrameTestHelpers::WebViewHelper webViewHelper(this); 1211 FrameTestHelpers::WebViewHelper webViewHelper;
1203 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, nu llptr, &client, nullptr, enableViewportSettings); 1212 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, nu llptr, &client, nullptr, enableViewportSettings);
1204 applyViewportStyleOverride(&webViewHelper); 1213 applyViewportStyleOverride(&webViewHelper);
1205 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1214 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1206 webViewHelper.webView()->settings()->setUseWideViewport(true); 1215 webViewHelper.webView()->settings()->setUseWideViewport(true);
1207 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1216 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1208 1217
1209 EXPECT_EQ(980, webViewHelper.webView()->mainFrameImpl()->frameView()->conten tsSize().width()); 1218 EXPECT_EQ(980, webViewHelper.webView()->mainFrameImpl()->frameView()->conten tsSize().width());
1210 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webView()->m ainFrameImpl()->frameView()->contentsSize().height()); 1219 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webView()->m ainFrameImpl()->frameView()->contentsSize().height());
1211 } 1220 }
1212 1221
1213 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithXhtmlMp) 1222 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithXhtmlMp)
1214 { 1223 {
1215 registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp.html"); 1224 registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp.html");
1216 1225
1217 FixedLayoutTestWebViewClient client; 1226 FixedLayoutTestWebViewClient client;
1218 client.m_screenInfo.deviceScaleFactor = 1; 1227 client.m_screenInfo.deviceScaleFactor = 1;
1219 int viewportWidth = 640; 1228 int viewportWidth = 640;
1220 int viewportHeight = 480; 1229 int viewportHeight = 480;
1221 1230
1222 FrameTestHelpers::WebViewHelper webViewHelper(this); 1231 FrameTestHelpers::WebViewHelper webViewHelper;
1223 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 1232 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
1224 applyViewportStyleOverride(&webViewHelper); 1233 applyViewportStyleOverride(&webViewHelper);
1225 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1234 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1226 webViewHelper.webView()->settings()->setUseWideViewport(true); 1235 webViewHelper.webView()->settings()->setUseWideViewport(true);
1227 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport/viewport-legacy-xhtmlmp.html"); 1236 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport/viewport-legacy-xhtmlmp.html");
1228 1237
1229 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1238 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1230 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->contentsSize().width()); 1239 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->contentsSize().width());
1231 EXPECT_EQ(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->contentsSize().height()); 1240 EXPECT_EQ(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->contentsSize().height());
1232 } 1241 }
1233 1242
1234 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndHeightInMeta) 1243 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndHeightInMeta)
1235 { 1244 {
1236 registerMockedHttpURLLoad("viewport-height-1000.html"); 1245 registerMockedHttpURLLoad("viewport-height-1000.html");
1237 1246
1238 FixedLayoutTestWebViewClient client; 1247 FixedLayoutTestWebViewClient client;
1239 client.m_screenInfo.deviceScaleFactor = 1; 1248 client.m_screenInfo.deviceScaleFactor = 1;
1240 int viewportWidth = 640; 1249 int viewportWidth = 640;
1241 int viewportHeight = 480; 1250 int viewportHeight = 480;
1242 1251
1243 FrameTestHelpers::WebViewHelper webViewHelper(this); 1252 FrameTestHelpers::WebViewHelper webViewHelper;
1244 webViewHelper.initializeAndLoad(m_baseURL + "viewport-height-1000.html", tru e, nullptr, &client, nullptr, enableViewportSettings); 1253 webViewHelper.initializeAndLoad(m_baseURL + "viewport-height-1000.html", tru e, nullptr, &client, nullptr, enableViewportSettings);
1245 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1254 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1246 webViewHelper.webView()->settings()->setUseWideViewport(false); 1255 webViewHelper.webView()->settings()->setUseWideViewport(false);
1247 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1256 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1248 1257
1249 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->contentsSize().width()); 1258 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->contentsSize().width());
1250 } 1259 }
1251 1260
1252 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithAutoWidth) 1261 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithAutoWidth)
1253 { 1262 {
1254 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); 1263 registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
1255 1264
1256 FixedLayoutTestWebViewClient client; 1265 FixedLayoutTestWebViewClient client;
1257 client.m_screenInfo.deviceScaleFactor = 1; 1266 client.m_screenInfo.deviceScaleFactor = 1;
1258 int viewportWidth = 640; 1267 int viewportWidth = 640;
1259 int viewportHeight = 480; 1268 int viewportHeight = 480;
1260 1269
1261 FrameTestHelpers::WebViewHelper webViewHelper(this); 1270 FrameTestHelpers::WebViewHelper webViewHelper;
1262 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale.html" , true, nullptr, &client, nullptr, enableViewportSettings); 1271 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale.html" , true, nullptr, &client, nullptr, enableViewportSettings);
1263 applyViewportStyleOverride(&webViewHelper); 1272 applyViewportStyleOverride(&webViewHelper);
1264 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1273 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1265 webViewHelper.webView()->settings()->setUseWideViewport(true); 1274 webViewHelper.webView()->settings()->setUseWideViewport(true);
1266 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1275 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1267 1276
1268 EXPECT_EQ(980, webViewHelper.webView()->mainFrameImpl()->frameView()->conten tsSize().width()); 1277 EXPECT_EQ(980, webViewHelper.webView()->mainFrameImpl()->frameView()->conten tsSize().width());
1269 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webView()->m ainFrameImpl()->frameView()->contentsSize().height()); 1278 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webView()->m ainFrameImpl()->frameView()->contentsSize().height());
1270 } 1279 }
1271 1280
1272 TEST_P(ParameterizedWebFrameTest, PageViewportInitialScaleOverridesLoadWithOverv iewMode) 1281 TEST_P(ParameterizedWebFrameTest, PageViewportInitialScaleOverridesLoadWithOverv iewMode)
1273 { 1282 {
1274 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1283 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1275 1284
1276 FixedLayoutTestWebViewClient client; 1285 FixedLayoutTestWebViewClient client;
1277 client.m_screenInfo.deviceScaleFactor = 1; 1286 client.m_screenInfo.deviceScaleFactor = 1;
1278 int viewportWidth = 640; 1287 int viewportWidth = 640;
1279 int viewportHeight = 480; 1288 int viewportHeight = 480;
1280 1289
1281 FrameTestHelpers::WebViewHelper webViewHelper(this); 1290 FrameTestHelpers::WebViewHelper webViewHelper;
1282 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, nullptr, &client, nullptr, enableViewportSettings); 1291 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, nullptr, &client, nullptr, enableViewportSettings);
1283 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1292 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1284 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1293 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1285 1294
1286 // The page must be displayed at 200% zoom, as specified in its viewport met a tag. 1295 // The page must be displayed at 200% zoom, as specified in its viewport met a tag.
1287 EXPECT_EQ(2.0f, webViewHelper.webView()->pageScaleFactor()); 1296 EXPECT_EQ(2.0f, webViewHelper.webView()->pageScaleFactor());
1288 } 1297 }
1289 1298
1290 TEST_P(ParameterizedWebFrameTest, setInitialPageScaleFactorPermanently) 1299 TEST_P(ParameterizedWebFrameTest, setInitialPageScaleFactorPermanently)
1291 { 1300 {
1292 registerMockedHttpURLLoad("fixed_layout.html"); 1301 registerMockedHttpURLLoad("fixed_layout.html");
1293 1302
1294 FixedLayoutTestWebViewClient client; 1303 FixedLayoutTestWebViewClient client;
1295 client.m_screenInfo.deviceScaleFactor = 1; 1304 client.m_screenInfo.deviceScaleFactor = 1;
1296 float enforcedPageScaleFactor = 2.0f; 1305 float enforcedPageScaleFactor = 2.0f;
1297 1306
1298 FrameTestHelpers::WebViewHelper webViewHelper(this); 1307 FrameTestHelpers::WebViewHelper webViewHelper;
1299 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 1308 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
1300 applyViewportStyleOverride(&webViewHelper); 1309 applyViewportStyleOverride(&webViewHelper);
1301 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1310 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1302 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1311 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1303 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1312 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1304 webViewHelper.webView()->updateAllLifecyclePhases(); 1313 webViewHelper.webView()->updateAllLifecyclePhases();
1305 1314
1306 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1315 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1307 1316
1308 int viewportWidth = 640; 1317 int viewportWidth = 640;
(...skipping 10 matching lines...) Expand all
1319 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWi thOverviewMode) 1328 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWi thOverviewMode)
1320 { 1329 {
1321 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1330 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1322 1331
1323 FixedLayoutTestWebViewClient client; 1332 FixedLayoutTestWebViewClient client;
1324 client.m_screenInfo.deviceScaleFactor = 1; 1333 client.m_screenInfo.deviceScaleFactor = 1;
1325 int viewportWidth = 640; 1334 int viewportWidth = 640;
1326 int viewportHeight = 480; 1335 int viewportHeight = 480;
1327 float enforcedPageScaleFactor = 0.5f; 1336 float enforcedPageScaleFactor = 0.5f;
1328 1337
1329 FrameTestHelpers::WebViewHelper webViewHelper(this); 1338 FrameTestHelpers::WebViewHelper webViewHelper;
1330 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings); 1339 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, nullptr, &client, nullptr, enableViewportSettings);
1331 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1340 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1332 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1341 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1333 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1342 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1334 1343
1335 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1344 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1336 } 1345 }
1337 1346
1338 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorOverridesPageVi ewportInitialScale) 1347 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorOverridesPageVi ewportInitialScale)
1339 { 1348 {
1340 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1349 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1341 1350
1342 FixedLayoutTestWebViewClient client; 1351 FixedLayoutTestWebViewClient client;
1343 client.m_screenInfo.deviceScaleFactor = 1; 1352 client.m_screenInfo.deviceScaleFactor = 1;
1344 int viewportWidth = 640; 1353 int viewportWidth = 640;
1345 int viewportHeight = 480; 1354 int viewportHeight = 480;
1346 float enforcedPageScaleFactor = 0.5f; 1355 float enforcedPageScaleFactor = 0.5f;
1347 1356
1348 FrameTestHelpers::WebViewHelper webViewHelper(this); 1357 FrameTestHelpers::WebViewHelper webViewHelper;
1349 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, nullptr, &client, nullptr, enableViewportSettings); 1358 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, nullptr, &client, nullptr, enableViewportSettings);
1350 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1359 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1351 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1360 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1352 1361
1353 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1362 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1354 } 1363 }
1355 1364
1356 TEST_P(ParameterizedWebFrameTest, SmallPermanentInitialPageScaleFactorIsClobbere d) 1365 TEST_P(ParameterizedWebFrameTest, SmallPermanentInitialPageScaleFactorIsClobbere d)
1357 { 1366 {
1358 const char* pages[] = { 1367 const char* pages[] = {
1359 // These pages trigger the clobbering condition. There must be a matchin g item in "pageScaleFactors" array. 1368 // These pages trigger the clobbering condition. There must be a matchin g item in "pageScaleFactors" array.
1360 "viewport-device-0.5x-initial-scale.html", 1369 "viewport-device-0.5x-initial-scale.html",
1361 "viewport-initial-scale-1.html", 1370 "viewport-initial-scale-1.html",
1362 // These ones do not. 1371 // These ones do not.
1363 "viewport-auto-initial-scale.html", 1372 "viewport-auto-initial-scale.html",
1364 "viewport-target-densitydpi-device-and-fixed-width.html" 1373 "viewport-target-densitydpi-device-and-fixed-width.html"
1365 }; 1374 };
1366 float pageScaleFactors[] = { 0.5f, 1.0f }; 1375 float pageScaleFactors[] = { 0.5f, 1.0f };
1367 for (size_t i = 0; i < WTF_ARRAY_LENGTH(pages); ++i) 1376 for (size_t i = 0; i < WTF_ARRAY_LENGTH(pages); ++i)
1368 registerMockedHttpURLLoad(pages[i]); 1377 registerMockedHttpURLLoad(pages[i]);
1369 1378
1370 FixedLayoutTestWebViewClient client; 1379 FixedLayoutTestWebViewClient client;
1371 client.m_screenInfo.deviceScaleFactor = 1; 1380 client.m_screenInfo.deviceScaleFactor = 1;
1372 int viewportWidth = 400; 1381 int viewportWidth = 400;
1373 int viewportHeight = 300; 1382 int viewportHeight = 300;
1374 float enforcedPageScaleFactor = 0.75f; 1383 float enforcedPageScaleFactor = 0.75f;
1375 1384
1376 for (size_t i = 0; i < WTF_ARRAY_LENGTH(pages); ++i) { 1385 for (size_t i = 0; i < WTF_ARRAY_LENGTH(pages); ++i) {
1377 for (int quirkEnabled = 0; quirkEnabled <= 1; ++quirkEnabled) { 1386 for (int quirkEnabled = 0; quirkEnabled <= 1; ++quirkEnabled) {
1378 FrameTestHelpers::WebViewHelper webViewHelper(this); 1387 FrameTestHelpers::WebViewHelper webViewHelper;
1379 webViewHelper.initializeAndLoad(m_baseURL + pages[i], true, nullptr, &client, nullptr, enableViewportSettings); 1388 webViewHelper.initializeAndLoad(m_baseURL + pages[i], true, nullptr, &client, nullptr, enableViewportSettings);
1380 applyViewportStyleOverride(&webViewHelper); 1389 applyViewportStyleOverride(&webViewHelper);
1381 webViewHelper.webView()->settings()->setClobberUserAgentInitialScale Quirk(quirkEnabled); 1390 webViewHelper.webView()->settings()->setClobberUserAgentInitialScale Quirk(quirkEnabled);
1382 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageSca leFactor); 1391 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageSca leFactor);
1383 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1392 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1384 1393
1385 float expectedPageScaleFactor = quirkEnabled && i < WTF_ARRAY_LENGTH (pageScaleFactors) ? pageScaleFactors[i] : enforcedPageScaleFactor; 1394 float expectedPageScaleFactor = quirkEnabled && i < WTF_ARRAY_LENGTH (pageScaleFactors) ? pageScaleFactors[i] : enforcedPageScaleFactor;
1386 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScal eFactor()); 1395 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScal eFactor());
1387 } 1396 }
1388 } 1397 }
1389 } 1398 }
1390 1399
1391 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorAffectsLayoutWi dth) 1400 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorAffectsLayoutWi dth)
1392 { 1401 {
1393 FixedLayoutTestWebViewClient client; 1402 FixedLayoutTestWebViewClient client;
1394 client.m_screenInfo.deviceScaleFactor = 1; 1403 client.m_screenInfo.deviceScaleFactor = 1;
1395 int viewportWidth = 640; 1404 int viewportWidth = 640;
1396 int viewportHeight = 480; 1405 int viewportHeight = 480;
1397 float enforcedPageScaleFactor = 0.5; 1406 float enforcedPageScaleFactor = 0.5;
1398 1407
1399 FrameTestHelpers::WebViewHelper webViewHelper(this); 1408 FrameTestHelpers::WebViewHelper webViewHelper;
1400 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings); 1409 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings);
1401 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1410 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1402 webViewHelper.webView()->settings()->setUseWideViewport(false); 1411 webViewHelper.webView()->settings()->setUseWideViewport(false);
1403 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1412 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1404 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1413 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1405 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1414 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1406 1415
1407 EXPECT_EQ(viewportWidth / enforcedPageScaleFactor, webViewHelper.webView()-> mainFrameImpl()->frameView()->contentsSize().width()); 1416 EXPECT_EQ(viewportWidth / enforcedPageScaleFactor, webViewHelper.webView()-> mainFrameImpl()->frameView()->contentsSize().width());
1408 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1417 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1409 } 1418 }
1410 1419
1411 TEST_P(ParameterizedWebFrameTest, DocumentElementClientHeightWorksWithWrapConten tMode) 1420 TEST_P(ParameterizedWebFrameTest, DocumentElementClientHeightWorksWithWrapConten tMode)
1412 { 1421 {
1413 registerMockedHttpURLLoad("0-by-0.html"); 1422 registerMockedHttpURLLoad("0-by-0.html");
1414 1423
1415 FixedLayoutTestWebViewClient client; 1424 FixedLayoutTestWebViewClient client;
1416 client.m_screenInfo.deviceScaleFactor = 1; 1425 client.m_screenInfo.deviceScaleFactor = 1;
1417 int viewportWidth = 640; 1426 int viewportWidth = 640;
1418 int viewportHeight = 480; 1427 int viewportHeight = 480;
1419 1428
1420 FrameTestHelpers::WebViewHelper webViewHelper(this); 1429 FrameTestHelpers::WebViewHelper webViewHelper;
1421 1430
1422 webViewHelper.initializeAndLoad(m_baseURL + "0-by-0.html", true, nullptr, &c lient, nullptr, configureAndroid); 1431 webViewHelper.initializeAndLoad(m_baseURL + "0-by-0.html", true, nullptr, &c lient, nullptr, configureAndroid);
1423 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1432 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1424 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1433 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1425 1434
1426 LocalFrame* frame = webViewHelper.webView()->mainFrameImpl()->frame(); 1435 LocalFrame* frame = webViewHelper.webView()->mainFrameImpl()->frame();
1427 Document* document = frame->document(); 1436 Document* document = frame->document();
1428 EXPECT_EQ(viewportHeight, document->documentElement()->clientHeight()); 1437 EXPECT_EQ(viewportHeight, document->documentElement()->clientHeight());
1429 EXPECT_EQ(viewportWidth, document->documentElement()->clientWidth()); 1438 EXPECT_EQ(viewportWidth, document->documentElement()->clientWidth());
1430 } 1439 }
1431 1440
1432 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWorksWithWrapContentMo de) 1441 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWorksWithWrapContentMo de)
1433 { 1442 {
1434 registerMockedHttpURLLoad("0-by-0.html"); 1443 registerMockedHttpURLLoad("0-by-0.html");
1435 1444
1436 FixedLayoutTestWebViewClient client; 1445 FixedLayoutTestWebViewClient client;
1437 client.m_screenInfo.deviceScaleFactor = 1; 1446 client.m_screenInfo.deviceScaleFactor = 1;
1438 int viewportWidth = 640; 1447 int viewportWidth = 640;
1439 int viewportHeight = 480; 1448 int viewportHeight = 480;
1440 1449
1441 FrameTestHelpers::WebViewHelper webViewHelper(this); 1450 FrameTestHelpers::WebViewHelper webViewHelper;
1442 1451
1443 webViewHelper.initializeAndLoad(m_baseURL + "0-by-0.html", true, nullptr, &c lient, nullptr, configureAndroid); 1452 webViewHelper.initializeAndLoad(m_baseURL + "0-by-0.html", true, nullptr, &c lient, nullptr, configureAndroid);
1444 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1453 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1445 PaintLayerCompositor* compositor = webViewHelper.webView()->compositor(); 1454 PaintLayerCompositor* compositor = webViewHelper.webView()->compositor();
1446 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().width()); 1455 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().width());
1447 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height()); 1456 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height());
1448 EXPECT_EQ(0.0, compositor->containerLayer()->size().width()); 1457 EXPECT_EQ(0.0, compositor->containerLayer()->size().width());
1449 EXPECT_EQ(0.0, compositor->containerLayer()->size().height()); 1458 EXPECT_EQ(0.0, compositor->containerLayer()->size().height());
1450 1459
1451 webViewHelper.resize(WebSize(viewportWidth, 0)); 1460 webViewHelper.resize(WebSize(viewportWidth, 0));
(...skipping 21 matching lines...) Expand all
1473 1482
1474 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeight) 1483 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeight)
1475 { 1484 {
1476 registerMockedHttpURLLoad("200-by-300.html"); 1485 registerMockedHttpURLLoad("200-by-300.html");
1477 1486
1478 FixedLayoutTestWebViewClient client; 1487 FixedLayoutTestWebViewClient client;
1479 client.m_screenInfo.deviceScaleFactor = 1; 1488 client.m_screenInfo.deviceScaleFactor = 1;
1480 int viewportWidth = 640; 1489 int viewportWidth = 640;
1481 int viewportHeight = 480; 1490 int viewportHeight = 480;
1482 1491
1483 FrameTestHelpers::WebViewHelper webViewHelper(this); 1492 FrameTestHelpers::WebViewHelper webViewHelper;
1484 1493
1485 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, nullptr , &client, nullptr, enableViewportSettings); 1494 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, nullptr , &client, nullptr, enableViewportSettings);
1486 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1495 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1487 1496
1488 EXPECT_LE(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->layoutSize().height()); 1497 EXPECT_LE(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameVie w()->layoutSize().height());
1489 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1498 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1490 EXPECT_TRUE(webViewHelper.webView()->mainFrameImpl()->frameView()->needsLayo ut()); 1499 EXPECT_TRUE(webViewHelper.webView()->mainFrameImpl()->frameView()->needsLayo ut());
1491 1500
1492 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height()); 1501 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height());
1493 1502
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1636 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWorksAcrossNavigations ) 1645 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWorksAcrossNavigations )
1637 { 1646 {
1638 registerMockedHttpURLLoad("200-by-300.html"); 1647 registerMockedHttpURLLoad("200-by-300.html");
1639 registerMockedHttpURLLoad("large-div.html"); 1648 registerMockedHttpURLLoad("large-div.html");
1640 1649
1641 FixedLayoutTestWebViewClient client; 1650 FixedLayoutTestWebViewClient client;
1642 client.m_screenInfo.deviceScaleFactor = 1; 1651 client.m_screenInfo.deviceScaleFactor = 1;
1643 int viewportWidth = 640; 1652 int viewportWidth = 640;
1644 int viewportHeight = 480; 1653 int viewportHeight = 480;
1645 1654
1646 FrameTestHelpers::WebViewHelper webViewHelper(this); 1655 FrameTestHelpers::WebViewHelper webViewHelper;
1647 1656
1648 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, nullptr , &client, nullptr, enableViewportSettings); 1657 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, nullptr , &client, nullptr, enableViewportSettings);
1649 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1658 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1650 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1659 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1651 1660
1652 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "large-div.html"); 1661 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "large-div.html");
1653 webViewHelper.webView()->updateAllLifecyclePhases(); 1662 webViewHelper.webView()->updateAllLifecyclePhases();
1654 1663
1655 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height()); 1664 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height());
1656 } 1665 }
1657 1666
1658 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWithWideViewportQuirk) 1667 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWithWideViewportQuirk)
1659 { 1668 {
1660 registerMockedHttpURLLoad("200-by-300.html"); 1669 registerMockedHttpURLLoad("200-by-300.html");
1661 1670
1662 FixedLayoutTestWebViewClient client; 1671 FixedLayoutTestWebViewClient client;
1663 client.m_screenInfo.deviceScaleFactor = 1; 1672 client.m_screenInfo.deviceScaleFactor = 1;
1664 int viewportWidth = 640; 1673 int viewportWidth = 640;
1665 int viewportHeight = 480; 1674 int viewportHeight = 480;
1666 1675
1667 FrameTestHelpers::WebViewHelper webViewHelper(this); 1676 FrameTestHelpers::WebViewHelper webViewHelper;
1668 1677
1669 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, nullptr , &client, nullptr, enableViewportSettings); 1678 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, nullptr , &client, nullptr, enableViewportSettings);
1670 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1679 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1671 webViewHelper.webView()->settings()->setUseWideViewport(true); 1680 webViewHelper.webView()->settings()->setUseWideViewport(true);
1672 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1681 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1673 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1682 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1674 1683
1675 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height()); 1684 EXPECT_EQ(0, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSi ze().height());
1676 } 1685 }
1677 1686
1678 TEST_P(ParameterizedWebFrameTest, WideViewportAndWideContentWithInitialScale) 1687 TEST_P(ParameterizedWebFrameTest, WideViewportAndWideContentWithInitialScale)
1679 { 1688 {
1680 registerMockedHttpURLLoad("wide_document_width_viewport.html"); 1689 registerMockedHttpURLLoad("wide_document_width_viewport.html");
1681 registerMockedHttpURLLoad("white-1x1.png"); 1690 registerMockedHttpURLLoad("white-1x1.png");
1682 1691
1683 FixedLayoutTestWebViewClient client; 1692 FixedLayoutTestWebViewClient client;
1684 client.m_screenInfo.deviceScaleFactor = 1; 1693 client.m_screenInfo.deviceScaleFactor = 1;
1685 int viewportWidth = 600; 1694 int viewportWidth = 600;
1686 int viewportHeight = 800; 1695 int viewportHeight = 800;
1687 1696
1688 FrameTestHelpers::WebViewHelper webViewHelper(this); 1697 FrameTestHelpers::WebViewHelper webViewHelper;
1689 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings); 1698 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings);
1690 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1699 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1691 webViewHelper.webView()->settings()->setUseWideViewport(true); 1700 webViewHelper.webView()->settings()->setUseWideViewport(true);
1692 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1701 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1693 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1702 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1694 1703
1695 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document_width_viewport.html"); 1704 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document_width_viewport.html");
1696 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1705 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1697 1706
1698 int wideDocumentWidth = 800; 1707 int wideDocumentWidth = 800;
1699 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; 1708 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth;
1700 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() ); 1709 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() );
1701 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor()); 1710 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor());
1702 } 1711 }
1703 1712
1704 TEST_P(ParameterizedWebFrameTest, WideViewportQuirkClobbersHeight) 1713 TEST_P(ParameterizedWebFrameTest, WideViewportQuirkClobbersHeight)
1705 { 1714 {
1706 registerMockedHttpURLLoad("viewport-height-1000.html"); 1715 registerMockedHttpURLLoad("viewport-height-1000.html");
1707 1716
1708 FixedLayoutTestWebViewClient client; 1717 FixedLayoutTestWebViewClient client;
1709 client.m_screenInfo.deviceScaleFactor = 1; 1718 client.m_screenInfo.deviceScaleFactor = 1;
1710 int viewportWidth = 600; 1719 int viewportWidth = 600;
1711 int viewportHeight = 800; 1720 int viewportHeight = 800;
1712 1721
1713 FrameTestHelpers::WebViewHelper webViewHelper(this); 1722 FrameTestHelpers::WebViewHelper webViewHelper;
1714 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings); 1723 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings);
1715 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1724 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1716 webViewHelper.webView()->settings()->setUseWideViewport(false); 1725 webViewHelper.webView()->settings()->setUseWideViewport(false);
1717 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1726 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1718 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1727 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1719 1728
1720 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-height-1000.html"); 1729 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-height-1000.html");
1721 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1730 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1722 1731
1723 EXPECT_EQ(800, webViewHelper.webView()->mainFrameImpl()->frameView()->layout Size().height()); 1732 EXPECT_EQ(800, webViewHelper.webView()->mainFrameImpl()->frameView()->layout Size().height());
1724 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor()); 1733 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor());
1725 } 1734 }
1726 1735
1727 TEST_P(ParameterizedWebFrameTest, LayoutSize320Quirk) 1736 TEST_P(ParameterizedWebFrameTest, LayoutSize320Quirk)
1728 { 1737 {
1729 registerMockedHttpURLLoad("viewport/viewport-30.html"); 1738 registerMockedHttpURLLoad("viewport/viewport-30.html");
1730 1739
1731 FixedLayoutTestWebViewClient client; 1740 FixedLayoutTestWebViewClient client;
1732 client.m_screenInfo.deviceScaleFactor = 1; 1741 client.m_screenInfo.deviceScaleFactor = 1;
1733 int viewportWidth = 600; 1742 int viewportWidth = 600;
1734 int viewportHeight = 800; 1743 int viewportHeight = 800;
1735 1744
1736 FrameTestHelpers::WebViewHelper webViewHelper(this); 1745 FrameTestHelpers::WebViewHelper webViewHelper;
1737 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings); 1746 webViewHelper.initializeAndLoad("about:blank", true, nullptr, &client, nullp tr, enableViewportSettings);
1738 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1747 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1739 webViewHelper.webView()->settings()->setUseWideViewport(true); 1748 webViewHelper.webView()->settings()->setUseWideViewport(true);
1740 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1749 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1741 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1750 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1742 1751
1743 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport/viewport-30.html"); 1752 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport/viewport-30.html");
1744 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1753 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1745 1754
1746 EXPECT_EQ(600, webViewHelper.webView()->mainFrameImpl()->frameView()->layout Size().width()); 1755 EXPECT_EQ(600, webViewHelper.webView()->mainFrameImpl()->frameView()->layout Size().width());
(...skipping 30 matching lines...) Expand all
1777 1786
1778 TEST_P(ParameterizedWebFrameTest, ZeroValuesQuirk) 1787 TEST_P(ParameterizedWebFrameTest, ZeroValuesQuirk)
1779 { 1788 {
1780 registerMockedHttpURLLoad("viewport-zero-values.html"); 1789 registerMockedHttpURLLoad("viewport-zero-values.html");
1781 1790
1782 FixedLayoutTestWebViewClient client; 1791 FixedLayoutTestWebViewClient client;
1783 client.m_screenInfo.deviceScaleFactor = 1; 1792 client.m_screenInfo.deviceScaleFactor = 1;
1784 int viewportWidth = 640; 1793 int viewportWidth = 640;
1785 int viewportHeight = 480; 1794 int viewportHeight = 480;
1786 1795
1787 FrameTestHelpers::WebViewHelper webViewHelper(this); 1796 FrameTestHelpers::WebViewHelper webViewHelper;
1788 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 1797 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
1789 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true); 1798 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true);
1790 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1799 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1791 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1800 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1792 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-zero-values.html"); 1801 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-zero-values.html");
1793 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1802 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1794 1803
1795 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->layoutSize().width()); 1804 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->layoutSize().width());
1796 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1805 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1797 1806
1798 webViewHelper.webView()->settings()->setUseWideViewport(true); 1807 webViewHelper.webView()->settings()->setUseWideViewport(true);
1799 webViewHelper.webView()->updateAllLifecyclePhases(); 1808 webViewHelper.webView()->updateAllLifecyclePhases();
1800 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->layoutSize().width()); 1809 EXPECT_EQ(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameView ()->layoutSize().width());
1801 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1810 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1802 } 1811 }
1803 1812
1804 TEST_P(ParameterizedWebFrameTest, OverflowHiddenDisablesScrolling) 1813 TEST_P(ParameterizedWebFrameTest, OverflowHiddenDisablesScrolling)
1805 { 1814 {
1806 registerMockedHttpURLLoad("body-overflow-hidden.html"); 1815 registerMockedHttpURLLoad("body-overflow-hidden.html");
1807 1816
1808 FixedLayoutTestWebViewClient client; 1817 FixedLayoutTestWebViewClient client;
1809 client.m_screenInfo.deviceScaleFactor = 1; 1818 client.m_screenInfo.deviceScaleFactor = 1;
1810 int viewportWidth = 640; 1819 int viewportWidth = 640;
1811 int viewportHeight = 480; 1820 int viewportHeight = 480;
1812 1821
1813 FrameTestHelpers::WebViewHelper webViewHelper(this); 1822 FrameTestHelpers::WebViewHelper webViewHelper;
1814 webViewHelper.initialize(true, nullptr, &client, nullptr); 1823 webViewHelper.initialize(true, nullptr, &client, nullptr);
1815 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html"); 1824 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html");
1816 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1825 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1817 1826
1818 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView(); 1827 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView();
1819 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar)); 1828 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar));
1820 EXPECT_FALSE(view->userInputScrollable(HorizontalScrollbar)); 1829 EXPECT_FALSE(view->userInputScrollable(HorizontalScrollbar));
1821 } 1830 }
1822 1831
1823 TEST_P(ParameterizedWebFrameTest, OverflowHiddenDisablesScrollingWithSetCanHaveS crollbars) 1832 TEST_P(ParameterizedWebFrameTest, OverflowHiddenDisablesScrollingWithSetCanHaveS crollbars)
1824 { 1833 {
1825 registerMockedHttpURLLoad("body-overflow-hidden-short.html"); 1834 registerMockedHttpURLLoad("body-overflow-hidden-short.html");
1826 1835
1827 FixedLayoutTestWebViewClient client; 1836 FixedLayoutTestWebViewClient client;
1828 client.m_screenInfo.deviceScaleFactor = 1; 1837 client.m_screenInfo.deviceScaleFactor = 1;
1829 int viewportWidth = 640; 1838 int viewportWidth = 640;
1830 int viewportHeight = 480; 1839 int viewportHeight = 480;
1831 1840
1832 FrameTestHelpers::WebViewHelper webViewHelper(this); 1841 FrameTestHelpers::WebViewHelper webViewHelper;
1833 webViewHelper.initialize(true, nullptr, &client, nullptr); 1842 webViewHelper.initialize(true, nullptr, &client, nullptr);
1834 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden-short.html"); 1843 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden-short.html");
1835 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1844 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1836 1845
1837 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView(); 1846 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView();
1838 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar)); 1847 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar));
1839 EXPECT_FALSE(view->userInputScrollable(HorizontalScrollbar)); 1848 EXPECT_FALSE(view->userInputScrollable(HorizontalScrollbar));
1840 1849
1841 webViewHelper.webView()->mainFrameImpl()->setCanHaveScrollbars(true); 1850 webViewHelper.webView()->mainFrameImpl()->setCanHaveScrollbars(true);
1842 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar)); 1851 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar));
(...skipping 22 matching lines...) Expand all
1865 TEST_P(ParameterizedWebFrameTest, NonZeroValuesNoQuirk) 1874 TEST_P(ParameterizedWebFrameTest, NonZeroValuesNoQuirk)
1866 { 1875 {
1867 registerMockedHttpURLLoad("viewport-nonzero-values.html"); 1876 registerMockedHttpURLLoad("viewport-nonzero-values.html");
1868 1877
1869 FixedLayoutTestWebViewClient client; 1878 FixedLayoutTestWebViewClient client;
1870 client.m_screenInfo.deviceScaleFactor = 1; 1879 client.m_screenInfo.deviceScaleFactor = 1;
1871 int viewportWidth = 640; 1880 int viewportWidth = 640;
1872 int viewportHeight = 480; 1881 int viewportHeight = 480;
1873 float expectedPageScaleFactor = 0.5f; 1882 float expectedPageScaleFactor = 0.5f;
1874 1883
1875 FrameTestHelpers::WebViewHelper webViewHelper(this); 1884 FrameTestHelpers::WebViewHelper webViewHelper;
1876 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 1885 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
1877 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true); 1886 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true);
1878 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1887 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1879 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-nonzero-values.html"); 1888 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-nonzero-values.html");
1880 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1889 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1881 1890
1882 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webView()-> mainFrameImpl()->frameView()->layoutSize().width()); 1891 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webView()-> mainFrameImpl()->frameView()->layoutSize().width());
1883 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1892 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1884 1893
1885 webViewHelper.webView()->settings()->setUseWideViewport(true); 1894 webViewHelper.webView()->settings()->setUseWideViewport(true);
1886 webViewHelper.webView()->updateAllLifecyclePhases(); 1895 webViewHelper.webView()->updateAllLifecyclePhases();
1887 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webView()-> mainFrameImpl()->frameView()->layoutSize().width()); 1896 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webView()-> mainFrameImpl()->frameView()->layoutSize().width());
1888 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1897 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1889 } 1898 }
1890 1899
1891 TEST_P(ParameterizedWebFrameTest, setPageScaleFactorDoesNotLayout) 1900 TEST_P(ParameterizedWebFrameTest, setPageScaleFactorDoesNotLayout)
1892 { 1901 {
1893 registerMockedHttpURLLoad("fixed_layout.html"); 1902 registerMockedHttpURLLoad("fixed_layout.html");
1894 1903
1895 FixedLayoutTestWebViewClient client; 1904 FixedLayoutTestWebViewClient client;
1896 client.m_screenInfo.deviceScaleFactor = 1; 1905 client.m_screenInfo.deviceScaleFactor = 1;
1897 // Small viewport to ensure there are always scrollbars. 1906 // Small viewport to ensure there are always scrollbars.
1898 int viewportWidth = 64; 1907 int viewportWidth = 64;
1899 int viewportHeight = 48; 1908 int viewportHeight = 48;
1900 1909
1901 FrameTestHelpers::WebViewHelper webViewHelper(this); 1910 FrameTestHelpers::WebViewHelper webViewHelper;
1902 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 1911 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
1903 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1912 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1904 1913
1905 int prevLayoutCount = webViewHelper.webView()->mainFrameImpl()->frameView()- >layoutCount(); 1914 int prevLayoutCount = webViewHelper.webView()->mainFrameImpl()->frameView()- >layoutCount();
1906 webViewHelper.webView()->setPageScaleFactor(3); 1915 webViewHelper.webView()->setPageScaleFactor(3);
1907 EXPECT_FALSE(webViewHelper.webView()->mainFrameImpl()->frameView()->needsLay out()); 1916 EXPECT_FALSE(webViewHelper.webView()->mainFrameImpl()->frameView()->needsLay out());
1908 EXPECT_EQ(prevLayoutCount, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutCount()); 1917 EXPECT_EQ(prevLayoutCount, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutCount());
1909 } 1918 }
1910 1919
1911 TEST_P(ParameterizedWebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNot Layout) 1920 TEST_P(ParameterizedWebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNot Layout)
1912 { 1921 {
1913 registerMockedHttpURLLoad("fixed_layout.html"); 1922 registerMockedHttpURLLoad("fixed_layout.html");
1914 1923
1915 FixedLayoutTestWebViewClient client; 1924 FixedLayoutTestWebViewClient client;
1916 client.m_screenInfo.deviceScaleFactor = 1; 1925 client.m_screenInfo.deviceScaleFactor = 1;
1917 int viewportWidth = 640; 1926 int viewportWidth = 640;
1918 int viewportHeight = 480; 1927 int viewportHeight = 480;
1919 1928
1920 FrameTestHelpers::WebViewHelper webViewHelper(this); 1929 FrameTestHelpers::WebViewHelper webViewHelper;
1921 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 1930 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
1922 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1931 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1923 1932
1924 int prevLayoutCount = webViewHelper.webView()->mainFrameImpl()->frameView()- >layoutCount(); 1933 int prevLayoutCount = webViewHelper.webView()->mainFrameImpl()->frameView()- >layoutCount();
1925 webViewHelper.webView()->setPageScaleFactor(30); 1934 webViewHelper.webView()->setPageScaleFactor(30);
1926 EXPECT_FALSE(webViewHelper.webView()->mainFrameImpl()->frameView()->needsLay out()); 1935 EXPECT_FALSE(webViewHelper.webView()->mainFrameImpl()->frameView()->needsLay out());
1927 EXPECT_EQ(prevLayoutCount, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutCount()); 1936 EXPECT_EQ(prevLayoutCount, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutCount());
1928 1937
1929 } 1938 }
1930 1939
1931 TEST_P(ParameterizedWebFrameTest, pageScaleFactorWrittenToHistoryItem) 1940 TEST_P(ParameterizedWebFrameTest, pageScaleFactorWrittenToHistoryItem)
1932 { 1941 {
1933 registerMockedHttpURLLoad("fixed_layout.html"); 1942 registerMockedHttpURLLoad("fixed_layout.html");
1934 1943
1935 FixedLayoutTestWebViewClient client; 1944 FixedLayoutTestWebViewClient client;
1936 client.m_screenInfo.deviceScaleFactor = 1; 1945 client.m_screenInfo.deviceScaleFactor = 1;
1937 int viewportWidth = 640; 1946 int viewportWidth = 640;
1938 int viewportHeight = 480; 1947 int viewportHeight = 480;
1939 1948
1940 FrameTestHelpers::WebViewHelper webViewHelper(this); 1949 FrameTestHelpers::WebViewHelper webViewHelper;
1941 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 1950 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
1942 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1951 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1943 1952
1944 webViewHelper.webView()->setPageScaleFactor(3); 1953 webViewHelper.webView()->setPageScaleFactor(3);
1945 EXPECT_EQ(3, toLocalFrame(webViewHelper.webView()->page()->mainFrame())->loa der().currentItem()->pageScaleFactor()); 1954 EXPECT_EQ(3, toLocalFrame(webViewHelper.webView()->page()->mainFrame())->loa der().currentItem()->pageScaleFactor());
1946 } 1955 }
1947 1956
1948 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem) 1957 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem)
1949 { 1958 {
1950 registerMockedHttpURLLoad("fixed_layout.html"); 1959 registerMockedHttpURLLoad("fixed_layout.html");
1951 1960
1952 FixedLayoutTestWebViewClient client; 1961 FixedLayoutTestWebViewClient client;
1953 client.m_screenInfo.deviceScaleFactor = 1; 1962 client.m_screenInfo.deviceScaleFactor = 1;
1954 int viewportWidth = 640; 1963 int viewportWidth = 640;
1955 int viewportHeight = 480; 1964 int viewportHeight = 480;
1956 1965
1957 FrameTestHelpers::WebViewHelper webViewHelper(this); 1966 FrameTestHelpers::WebViewHelper webViewHelper;
1958 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings); 1967 webViewHelper.initialize(true, nullptr, &client, nullptr, enableViewportSett ings);
1959 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 1968 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
1960 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html"); 1969 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html");
1961 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1970 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1962 1971
1963 int defaultFixedLayoutWidth = 980; 1972 int defaultFixedLayoutWidth = 980;
1964 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th; 1973 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th;
1965 EXPECT_EQ(minimumPageScaleFactor, toLocalFrame(webViewHelper.webView()->page ()->mainFrame())->loader().currentItem()->pageScaleFactor()); 1974 EXPECT_EQ(minimumPageScaleFactor, toLocalFrame(webViewHelper.webView()->page ()->mainFrame())->loader().currentItem()->pageScaleFactor());
1966 } 1975 }
1967 1976
1968 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView) 1977 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView)
1969 { 1978 {
1970 registerMockedHttpURLLoad("large-div.html"); 1979 registerMockedHttpURLLoad("large-div.html");
1971 1980
1972 FixedLayoutTestWebViewClient client; 1981 FixedLayoutTestWebViewClient client;
1973 client.m_screenInfo.deviceScaleFactor = 1; 1982 client.m_screenInfo.deviceScaleFactor = 1;
1974 // Small viewport to ensure there are always scrollbars. 1983 // Small viewport to ensure there are always scrollbars.
1975 int viewportWidth = 64; 1984 int viewportWidth = 64;
1976 int viewportHeight = 48; 1985 int viewportHeight = 48;
1977 1986
1978 FrameTestHelpers::WebViewHelper webViewHelper(this); 1987 FrameTestHelpers::WebViewHelper webViewHelper;
1979 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, nullptr, &client, nullptr, enableViewportSettings); 1988 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, nullptr, &client, nullptr, enableViewportSettings);
1980 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 1989 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
1981 1990
1982 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView(); 1991 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView();
1983 int viewportWidthMinusScrollbar = viewportWidth; 1992 int viewportWidthMinusScrollbar = viewportWidth;
1984 int viewportHeightMinusScrollbar = viewportHeight; 1993 int viewportHeightMinusScrollbar = viewportHeight;
1985 1994
1986 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlayScroll bar()) 1995 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlayScroll bar())
1987 viewportWidthMinusScrollbar -= 15; 1996 viewportWidthMinusScrollbar -= 15;
1988 1997
(...skipping 17 matching lines...) Expand all
2006 2015
2007 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesNotApplyCssTransform) 2016 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesNotApplyCssTransform)
2008 { 2017 {
2009 registerMockedHttpURLLoad("fixed_layout.html"); 2018 registerMockedHttpURLLoad("fixed_layout.html");
2010 2019
2011 FixedLayoutTestWebViewClient client; 2020 FixedLayoutTestWebViewClient client;
2012 client.m_screenInfo.deviceScaleFactor = 1; 2021 client.m_screenInfo.deviceScaleFactor = 1;
2013 int viewportWidth = 640; 2022 int viewportWidth = 640;
2014 int viewportHeight = 480; 2023 int viewportHeight = 480;
2015 2024
2016 FrameTestHelpers::WebViewHelper webViewHelper(this); 2025 FrameTestHelpers::WebViewHelper webViewHelper;
2017 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 2026 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
2018 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2027 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2019 2028
2020 webViewHelper.webView()->setPageScaleFactor(2); 2029 webViewHelper.webView()->setPageScaleFactor(2);
2021 2030
2022 EXPECT_EQ(980, toLocalFrame(webViewHelper.webView()->page()->mainFrame())->c ontentLayoutItem().documentRect().width()); 2031 EXPECT_EQ(980, toLocalFrame(webViewHelper.webView()->page()->mainFrame())->c ontentLayoutItem().documentRect().width());
2023 EXPECT_EQ(980, webViewHelper.webView()->mainFrameImpl()->frameView()->conten tsSize().width()); 2032 EXPECT_EQ(980, webViewHelper.webView()->mainFrameImpl()->frameView()->conten tsSize().width());
2024 } 2033 }
2025 2034
2026 TEST_P(ParameterizedWebFrameTest, targetDensityDpiHigh) 2035 TEST_P(ParameterizedWebFrameTest, targetDensityDpiHigh)
2027 { 2036 {
2028 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); 2037 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html");
2029 2038
2030 FixedLayoutTestWebViewClient client; 2039 FixedLayoutTestWebViewClient client;
2031 // high-dpi = 240 2040 // high-dpi = 240
2032 float targetDpi = 240.0f; 2041 float targetDpi = 240.0f;
2033 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 2042 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
2034 int viewportWidth = 640; 2043 int viewportWidth = 640;
2035 int viewportHeight = 480; 2044 int viewportHeight = 480;
2036 2045
2037 for (size_t i = 0; i < WTF_ARRAY_LENGTH(deviceScaleFactors); ++i) { 2046 for (size_t i = 0; i < WTF_ARRAY_LENGTH(deviceScaleFactors); ++i) {
2038 float deviceScaleFactor = deviceScaleFactors[i]; 2047 float deviceScaleFactor = deviceScaleFactors[i];
2039 float deviceDpi = deviceScaleFactor * 160.0f; 2048 float deviceDpi = deviceScaleFactor * 160.0f;
2040 client.m_screenInfo.deviceScaleFactor = deviceScaleFactor; 2049 client.m_screenInfo.deviceScaleFactor = deviceScaleFactor;
2041 2050
2042 FrameTestHelpers::WebViewHelper webViewHelper(this); 2051 FrameTestHelpers::WebViewHelper webViewHelper;
2043 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- high.html", true, nullptr, &client, nullptr, enableViewportSettings); 2052 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- high.html", true, nullptr, &client, nullptr, enableViewportSettings);
2044 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2053 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2045 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 2054 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
2046 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2055 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2047 2056
2048 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce 2057 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce
2049 // physical pixels. 2058 // physical pixels.
2050 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi; 2059 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi;
2051 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, webViewHelper.webView( )->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2060 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, webViewHelper.webView( )->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2052 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, webViewHelper.webView ()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2061 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, webViewHelper.webView ()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2053 EXPECT_NEAR(1.0f / densityDpiScaleRatio, webViewHelper.webView()->pageSc aleFactor(), 0.01f); 2062 EXPECT_NEAR(1.0f / densityDpiScaleRatio, webViewHelper.webView()->pageSc aleFactor(), 0.01f);
2054 } 2063 }
2055 } 2064 }
2056 2065
2057 TEST_P(ParameterizedWebFrameTest, targetDensityDpiDevice) 2066 TEST_P(ParameterizedWebFrameTest, targetDensityDpiDevice)
2058 { 2067 {
2059 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html"); 2068 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html");
2060 2069
2061 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 2070 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
2062 2071
2063 FixedLayoutTestWebViewClient client; 2072 FixedLayoutTestWebViewClient client;
2064 int viewportWidth = 640; 2073 int viewportWidth = 640;
2065 int viewportHeight = 480; 2074 int viewportHeight = 480;
2066 2075
2067 for (size_t i = 0; i < WTF_ARRAY_LENGTH(deviceScaleFactors); ++i) { 2076 for (size_t i = 0; i < WTF_ARRAY_LENGTH(deviceScaleFactors); ++i) {
2068 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 2077 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
2069 2078
2070 FrameTestHelpers::WebViewHelper webViewHelper(this); 2079 FrameTestHelpers::WebViewHelper webViewHelper;
2071 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device.html", true, nullptr, &client, nullptr, enableViewportSettings); 2080 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device.html", true, nullptr, &client, nullptr, enableViewportSettings);
2072 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2081 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2073 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 2082 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
2074 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2083 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2075 2084
2076 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webVi ewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2085 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webVi ewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2077 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webV iewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2086 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webV iewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2078 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper. webView()->pageScaleFactor(), 0.01f); 2087 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper. webView()->pageScaleFactor(), 0.01f);
2079 } 2088 }
2080 } 2089 }
2081 2090
2082 TEST_P(ParameterizedWebFrameTest, targetDensityDpiDeviceAndFixedWidth) 2091 TEST_P(ParameterizedWebFrameTest, targetDensityDpiDeviceAndFixedWidth)
2083 { 2092 {
2084 registerMockedHttpURLLoad("viewport-target-densitydpi-device-and-fixed-width .html"); 2093 registerMockedHttpURLLoad("viewport-target-densitydpi-device-and-fixed-width .html");
2085 2094
2086 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 2095 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
2087 2096
2088 FixedLayoutTestWebViewClient client; 2097 FixedLayoutTestWebViewClient client;
2089 int viewportWidth = 640; 2098 int viewportWidth = 640;
2090 int viewportHeight = 480; 2099 int viewportHeight = 480;
2091 2100
2092 for (size_t i = 0; i < WTF_ARRAY_LENGTH(deviceScaleFactors); ++i) { 2101 for (size_t i = 0; i < WTF_ARRAY_LENGTH(deviceScaleFactors); ++i) {
2093 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 2102 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
2094 2103
2095 FrameTestHelpers::WebViewHelper webViewHelper(this); 2104 FrameTestHelpers::WebViewHelper webViewHelper;
2096 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device-and-fixed-width.html", true, nullptr, &client, nullptr, enableViewportSet tings); 2105 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device-and-fixed-width.html", true, nullptr, &client, nullptr, enableViewportSet tings);
2097 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2106 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2098 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 2107 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
2099 webViewHelper.webView()->settings()->setUseWideViewport(true); 2108 webViewHelper.webView()->settings()->setUseWideViewport(true);
2100 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2109 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2101 2110
2102 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->mainFrameImpl()->fra meView()->layoutSize().width(), 1.0f); 2111 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->mainFrameImpl()->fra meView()->layoutSize().width(), 1.0f);
2103 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutSize().height(), 1.0f); 2112 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutSize().height(), 1.0f);
2104 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 2113 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
2105 } 2114 }
2106 } 2115 }
2107 2116
2108 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndScaleLessThanOne) 2117 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndScaleLessThanOne)
2109 { 2118 {
2110 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1.html"); 2119 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1.html");
2111 2120
2112 FixedLayoutTestWebViewClient client; 2121 FixedLayoutTestWebViewClient client;
2113 client.m_screenInfo.deviceScaleFactor = 1.33f; 2122 client.m_screenInfo.deviceScaleFactor = 1.33f;
2114 int viewportWidth = 640; 2123 int viewportWidth = 640;
2115 int viewportHeight = 480; 2124 int viewportHeight = 480;
2116 2125
2117 FrameTestHelpers::WebViewHelper webViewHelper(this); 2126 FrameTestHelpers::WebViewHelper webViewHelper;
2118 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1.html", true, nullptr, &client, nullptr, enableViewportSettings); 2127 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1.html", true, nullptr, &client, nullptr, enableViewportSettings);
2119 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 2128 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
2120 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2129 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2121 webViewHelper.webView()->settings()->setUseWideViewport(false); 2130 webViewHelper.webView()->settings()->setUseWideViewport(false);
2122 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2131 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2123 2132
2124 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2133 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2125 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2134 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2126 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 2135 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
2127 } 2136 }
2128 2137
2129 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndScaleLessThanOneWithDeviceWid th) 2138 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndScaleLessThanOneWithDeviceWid th)
2130 { 2139 {
2131 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1-device-width.h tml"); 2140 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1-device-width.h tml");
2132 2141
2133 FixedLayoutTestWebViewClient client; 2142 FixedLayoutTestWebViewClient client;
2134 client.m_screenInfo.deviceScaleFactor = 1.33f; 2143 client.m_screenInfo.deviceScaleFactor = 1.33f;
2135 int viewportWidth = 640; 2144 int viewportWidth = 640;
2136 int viewportHeight = 480; 2145 int viewportHeight = 480;
2137 2146
2138 FrameTestHelpers::WebViewHelper webViewHelper(this); 2147 FrameTestHelpers::WebViewHelper webViewHelper;
2139 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1-device-width.html", true, nullptr, &client, nullptr, enableViewportSettings) ; 2148 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1-device-width.html", true, nullptr, &client, nullptr, enableViewportSettings) ;
2140 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 2149 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
2141 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2150 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2142 webViewHelper.webView()->settings()->setUseWideViewport(false); 2151 webViewHelper.webView()->settings()->setUseWideViewport(false);
2143 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2152 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2144 2153
2145 const float pageZoom = 0.25f; 2154 const float pageZoom = 0.25f;
2146 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor / pageZoom , webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1 .0f); 2155 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor / pageZoom , webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1 .0f);
2147 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor / pageZoo m, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2156 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor / pageZoo m, webViewHelper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2148 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 2157 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
2149 } 2158 }
2150 2159
2151 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndNoViewportWithInitialPageScal eOverride) 2160 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndNoViewportWithInitialPageScal eOverride)
2152 { 2161 {
2153 registerMockedHttpURLLoad("large-div.html"); 2162 registerMockedHttpURLLoad("large-div.html");
2154 2163
2155 FixedLayoutTestWebViewClient client; 2164 FixedLayoutTestWebViewClient client;
2156 int viewportWidth = 640; 2165 int viewportWidth = 640;
2157 int viewportHeight = 480; 2166 int viewportHeight = 480;
2158 float enforcedPageScaleFactor = 5.0f; 2167 float enforcedPageScaleFactor = 5.0f;
2159 2168
2160 FrameTestHelpers::WebViewHelper webViewHelper(this); 2169 FrameTestHelpers::WebViewHelper webViewHelper;
2161 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, nullptr, &client, nullptr, enableViewportSettings); 2170 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, nullptr, &client, nullptr, enableViewportSettings);
2162 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2171 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2163 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2172 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2164 webViewHelper.webView()->settings()->setUseWideViewport(false); 2173 webViewHelper.webView()->settings()->setUseWideViewport(false);
2165 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 2174 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
2166 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2175 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2167 2176
2168 EXPECT_NEAR(viewportWidth / enforcedPageScaleFactor, webViewHelper.webView() ->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2177 EXPECT_NEAR(viewportWidth / enforcedPageScaleFactor, webViewHelper.webView() ->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2169 EXPECT_NEAR(viewportHeight / enforcedPageScaleFactor, webViewHelper.webView( )->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2178 EXPECT_NEAR(viewportHeight / enforcedPageScaleFactor, webViewHelper.webView( )->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2170 EXPECT_NEAR(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFacto r(), 0.01f); 2179 EXPECT_NEAR(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFacto r(), 0.01f);
2171 } 2180 }
2172 2181
2173 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScale) 2182 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScale)
2174 { 2183 {
2175 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" ); 2184 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" );
2176 2185
2177 FixedLayoutTestWebViewClient client; 2186 FixedLayoutTestWebViewClient client;
2178 int viewportWidth = 640; 2187 int viewportWidth = 640;
2179 int viewportHeight = 480; 2188 int viewportHeight = 480;
2180 2189
2181 FrameTestHelpers::WebViewHelper webViewHelper(this); 2190 FrameTestHelpers::WebViewHelper webViewHelper;
2182 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, nullptr, &client, nullptr, enableViewportSettings); 2191 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, nullptr, &client, nullptr, enableViewportSettings);
2183 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e); 2192 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e);
2184 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2193 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2185 2194
2186 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutSize().width(), 1.0f); 2195 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutSize().width(), 1.0f);
2187 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameV iew()->layoutSize().height(), 1.0f); 2196 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameV iew()->layoutSize().height(), 1.0f);
2188 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 2197 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
2189 } 2198 }
2190 2199
2191 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForNonW ideViewport) 2200 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForNonW ideViewport)
2192 { 2201 {
2193 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" ); 2202 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" );
2194 2203
2195 FixedLayoutTestWebViewClient client; 2204 FixedLayoutTestWebViewClient client;
2196 client.m_screenInfo.deviceScaleFactor = 1.33f; 2205 client.m_screenInfo.deviceScaleFactor = 1.33f;
2197 int viewportWidth = 640; 2206 int viewportWidth = 640;
2198 int viewportHeight = 480; 2207 int viewportHeight = 480;
2199 2208
2200 FrameTestHelpers::WebViewHelper webViewHelper(this); 2209 FrameTestHelpers::WebViewHelper webViewHelper;
2201 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, nullptr, &client, nullptr, enableViewportSettings); 2210 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, nullptr, &client, nullptr, enableViewportSettings);
2202 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 2211 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
2203 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e); 2212 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e);
2204 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2213 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2205 webViewHelper.webView()->settings()->setUseWideViewport(false); 2214 webViewHelper.webView()->settings()->setUseWideViewport(false);
2206 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2215 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2207 2216
2208 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2217 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webView()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2209 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2218 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webView()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2210 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 2219 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
2211 } 2220 }
2212 2221
2213 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForWide Viewport) 2222 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForWide Viewport)
2214 { 2223 {
2215 registerMockedHttpURLLoad("viewport-2x-initial-scale-non-user-scalable.html" ); 2224 registerMockedHttpURLLoad("viewport-2x-initial-scale-non-user-scalable.html" );
2216 2225
2217 FixedLayoutTestWebViewClient client; 2226 FixedLayoutTestWebViewClient client;
2218 int viewportWidth = 640; 2227 int viewportWidth = 640;
2219 int viewportHeight = 480; 2228 int viewportHeight = 480;
2220 2229
2221 FrameTestHelpers::WebViewHelper webViewHelper(this); 2230 FrameTestHelpers::WebViewHelper webViewHelper;
2222 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale-non-u ser-scalable.html", true, nullptr, &client, nullptr, enableViewportSettings); 2231 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale-non-u ser-scalable.html", true, nullptr, &client, nullptr, enableViewportSettings);
2223 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e); 2232 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e);
2224 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2233 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2225 webViewHelper.webView()->settings()->setUseWideViewport(true); 2234 webViewHelper.webView()->settings()->setUseWideViewport(true);
2226 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2235 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2227 2236
2228 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutSize().width(), 1.0f); 2237 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->mainFrameImpl()->frameVi ew()->layoutSize().width(), 1.0f);
2229 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameV iew()->layoutSize().height(), 1.0f); 2238 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->mainFrameImpl()->frameV iew()->layoutSize().height(), 1.0f);
2230 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 2239 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
2231 } 2240 }
2232 2241
2233 TEST_P(ParameterizedWebFrameTest, DesktopPageCanBeZoomedInWhenWideViewportIsTurn edOff) 2242 TEST_P(ParameterizedWebFrameTest, DesktopPageCanBeZoomedInWhenWideViewportIsTurn edOff)
2234 { 2243 {
2235 registerMockedHttpURLLoad("no_viewport_tag.html"); 2244 registerMockedHttpURLLoad("no_viewport_tag.html");
2236 2245
2237 FixedLayoutTestWebViewClient client; 2246 FixedLayoutTestWebViewClient client;
2238 int viewportWidth = 640; 2247 int viewportWidth = 640;
2239 int viewportHeight = 480; 2248 int viewportHeight = 480;
2240 2249
2241 FrameTestHelpers::WebViewHelper webViewHelper(this); 2250 FrameTestHelpers::WebViewHelper webViewHelper;
2242 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, nu llptr, &client, nullptr, enableViewportSettings); 2251 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, nu llptr, &client, nullptr, enableViewportSettings);
2243 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2252 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2244 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2253 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2245 webViewHelper.webView()->settings()->setUseWideViewport(false); 2254 webViewHelper.webView()->settings()->setUseWideViewport(false);
2246 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2255 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2247 2256
2248 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 2257 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
2249 EXPECT_NEAR(1.0f, webViewHelper.webView()->minimumPageScaleFactor(), 0.01f); 2258 EXPECT_NEAR(1.0f, webViewHelper.webView()->minimumPageScaleFactor(), 0.01f);
2250 EXPECT_NEAR(5.0f, webViewHelper.webView()->maximumPageScaleFactor(), 0.01f); 2259 EXPECT_NEAR(5.0f, webViewHelper.webView()->maximumPageScaleFactor(), 0.01f);
2251 } 2260 }
(...skipping 10 matching lines...) Expand all
2262 2271
2263 void testResizeYieldsCorrectScrollAndScale(const char* url, 2272 void testResizeYieldsCorrectScrollAndScale(const char* url,
2264 const float initialPageScaleFacto r, 2273 const float initialPageScaleFacto r,
2265 const WebSize scrollOffset, 2274 const WebSize scrollOffset,
2266 const WebSize viewportSize, 2275 const WebSize viewportSize,
2267 const bool shouldScaleRelativeToV iewportWidth) { 2276 const bool shouldScaleRelativeToV iewportWidth) {
2268 registerMockedHttpURLLoad(url); 2277 registerMockedHttpURLLoad(url);
2269 2278
2270 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp ortSize.height; 2279 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp ortSize.height;
2271 2280
2272 FrameTestHelpers::WebViewHelper webViewHelper(this); 2281 FrameTestHelpers::WebViewHelper webViewHelper;
2273 webViewHelper.initializeAndLoad(m_baseURL + url, true, nullptr, nullptr, nullptr, enableViewportSettings); 2282 webViewHelper.initializeAndLoad(m_baseURL + url, true, nullptr, nullptr, nullptr, enableViewportSettings);
2274 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2283 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2275 2284
2276 // Origin scrollOffsets preserved under resize. 2285 // Origin scrollOffsets preserved under resize.
2277 { 2286 {
2278 webViewHelper.resize(WebSize(viewportSize.width, viewportSize.height )); 2287 webViewHelper.resize(WebSize(viewportSize.width, viewportSize.height ));
2279 webViewHelper.webView()->setPageScaleFactor(initialPageScaleFactor); 2288 webViewHelper.webView()->setPageScaleFactor(initialPageScaleFactor);
2280 ASSERT_EQ(viewportSize, webViewHelper.webView()->size()); 2289 ASSERT_EQ(viewportSize, webViewHelper.webView()->size());
2281 ASSERT_EQ(initialPageScaleFactor, webViewHelper.webView()->pageScale Factor()); 2290 ASSERT_EQ(initialPageScaleFactor, webViewHelper.webView()->pageScale Factor());
2282 webViewHelper.resize(WebSize(viewportSize.height, viewportSize.width )); 2291 webViewHelper.resize(WebSize(viewportSize.height, viewportSize.width ));
(...skipping 12 matching lines...) Expand all
2295 webViewHelper.resize(WebSize(viewportSize.width, viewportSize.height * 0.8f)); 2304 webViewHelper.resize(WebSize(viewportSize.width, viewportSize.height * 0.8f));
2296 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webView()->pageScale Factor()); 2305 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webView()->pageScale Factor());
2297 EXPECT_EQ(expectedScrollOffset, webViewHelper.webView()->mainFrame() ->scrollOffset()); 2306 EXPECT_EQ(expectedScrollOffset, webViewHelper.webView()->mainFrame() ->scrollOffset());
2298 webViewHelper.resize(WebSize(viewportSize.width, viewportSize.height * 0.8f)); 2307 webViewHelper.resize(WebSize(viewportSize.width, viewportSize.height * 0.8f));
2299 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webView()->pageScale Factor()); 2308 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webView()->pageScale Factor());
2300 EXPECT_EQ(expectedScrollOffset, webViewHelper.webView()->mainFrame() ->scrollOffset()); 2309 EXPECT_EQ(expectedScrollOffset, webViewHelper.webView()->mainFrame() ->scrollOffset());
2301 } 2310 }
2302 } 2311 }
2303 }; 2312 };
2304 2313
2305 INSTANTIATE_TEST_CASE_P(All, WebFrameResizeTest, ::testing::Values( 2314 INSTANTIATE_TEST_CASE_P(All, WebFrameResizeTest, ::testing::Bool());
2306 FrameTestHelpers::DefaultSettingOverride,
2307 FrameTestHelpers::RootLayerScrollsSettingOverride));
2308 2315
2309 TEST_P(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForWidthEqualsDevice Width) 2316 TEST_P(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForWidthEqualsDevice Width)
2310 { 2317 {
2311 // With width=device-width, pageScaleFactor is preserved across resizes as 2318 // With width=device-width, pageScaleFactor is preserved across resizes as
2312 // long as the content adjusts according to the device-width. 2319 // long as the content adjusts according to the device-width.
2313 const char* url = "resize_scroll_mobile.html"; 2320 const char* url = "resize_scroll_mobile.html";
2314 const float initialPageScaleFactor = 1; 2321 const float initialPageScaleFactor = 1;
2315 const WebSize scrollOffset(0, 50); 2322 const WebSize scrollOffset(0, 50);
2316 const WebSize viewportSize(120, 160); 2323 const WebSize viewportSize(120, 160);
2317 const bool shouldScaleRelativeToViewportWidth = true; 2324 const bool shouldScaleRelativeToViewportWidth = true;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2364 2371
2365 TEST_P(ParameterizedWebFrameTest, pageScaleFactorUpdatesScrollbars) 2372 TEST_P(ParameterizedWebFrameTest, pageScaleFactorUpdatesScrollbars)
2366 { 2373 {
2367 registerMockedHttpURLLoad("fixed_layout.html"); 2374 registerMockedHttpURLLoad("fixed_layout.html");
2368 2375
2369 FixedLayoutTestWebViewClient client; 2376 FixedLayoutTestWebViewClient client;
2370 client.m_screenInfo.deviceScaleFactor = 1; 2377 client.m_screenInfo.deviceScaleFactor = 1;
2371 int viewportWidth = 640; 2378 int viewportWidth = 640;
2372 int viewportHeight = 480; 2379 int viewportHeight = 480;
2373 2380
2374 FrameTestHelpers::WebViewHelper webViewHelper(this); 2381 FrameTestHelpers::WebViewHelper webViewHelper;
2375 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings); 2382 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, nullp tr, &client, nullptr, enableViewportSettings);
2376 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2383 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2377 2384
2378 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView(); 2385 FrameView* view = webViewHelper.webView()->mainFrameImpl()->frameView();
2379 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width()); 2386 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width());
2380 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height()); 2387 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height());
2381 2388
2382 webViewHelper.webView()->setPageScaleFactor(10); 2389 webViewHelper.webView()->setPageScaleFactor(10);
2383 2390
2384 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width()); 2391 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width());
2385 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height()); 2392 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height());
2386 } 2393 }
2387 2394
2388 TEST_P(ParameterizedWebFrameTest, CanOverrideScaleLimits) 2395 TEST_P(ParameterizedWebFrameTest, CanOverrideScaleLimits)
2389 { 2396 {
2390 registerMockedHttpURLLoad("no_scale_for_you.html"); 2397 registerMockedHttpURLLoad("no_scale_for_you.html");
2391 2398
2392 FixedLayoutTestWebViewClient client; 2399 FixedLayoutTestWebViewClient client;
2393 client.m_screenInfo.deviceScaleFactor = 1; 2400 client.m_screenInfo.deviceScaleFactor = 1;
2394 int viewportWidth = 640; 2401 int viewportWidth = 640;
2395 int viewportHeight = 480; 2402 int viewportHeight = 480;
2396 2403
2397 FrameTestHelpers::WebViewHelper webViewHelper(this); 2404 FrameTestHelpers::WebViewHelper webViewHelper;
2398 webViewHelper.initializeAndLoad(m_baseURL + "no_scale_for_you.html", true, n ullptr, &client, nullptr, enableViewportSettings); 2405 webViewHelper.initializeAndLoad(m_baseURL + "no_scale_for_you.html", true, n ullptr, &client, nullptr, enableViewportSettings);
2399 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2406 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2400 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2407 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2401 2408
2402 EXPECT_EQ(2.0f, webViewHelper.webView()->minimumPageScaleFactor()); 2409 EXPECT_EQ(2.0f, webViewHelper.webView()->minimumPageScaleFactor());
2403 EXPECT_EQ(2.0f, webViewHelper.webView()->maximumPageScaleFactor()); 2410 EXPECT_EQ(2.0f, webViewHelper.webView()->maximumPageScaleFactor());
2404 2411
2405 webViewHelper.webView()->setIgnoreViewportTagScaleLimits(true); 2412 webViewHelper.webView()->setIgnoreViewportTagScaleLimits(true);
2406 webViewHelper.webView()->updateAllLifecyclePhases(); 2413 webViewHelper.webView()->updateAllLifecyclePhases();
2407 2414
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2472 } 2479 }
2473 2480
2474 TEST_P(ParameterizedWebFrameTest, DivAutoZoomParamsTest) 2481 TEST_P(ParameterizedWebFrameTest, DivAutoZoomParamsTest)
2475 { 2482 {
2476 registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html"); 2483 registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html");
2477 2484
2478 const float deviceScaleFactor = 2.0f; 2485 const float deviceScaleFactor = 2.0f;
2479 int viewportWidth = 640 / deviceScaleFactor; 2486 int viewportWidth = 640 / deviceScaleFactor;
2480 int viewportHeight = 1280 / deviceScaleFactor; 2487 int viewportHeight = 1280 / deviceScaleFactor;
2481 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2488 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2482 FrameTestHelpers::WebViewHelper webViewHelper(this); 2489 FrameTestHelpers::WebViewHelper webViewHelper;
2483 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_di v_test.html", false, nullptr, nullptr, nullptr, configureAndroid); 2490 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_di v_test.html", false, nullptr, nullptr, nullptr, configureAndroid);
2484 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2491 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2485 webViewHelper.webView()->setDefaultPageScaleLimits(0.01f, 4); 2492 webViewHelper.webView()->setDefaultPageScaleLimits(0.01f, 4);
2486 webViewHelper.webView()->setPageScaleFactor(0.5f); 2493 webViewHelper.webView()->setPageScaleFactor(0.5f);
2487 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2494 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2488 2495
2489 WebRect wideDiv(200, 100, 400, 150); 2496 WebRect wideDiv(200, 100, 400, 150);
2490 WebRect tallDiv(200, 300, 400, 800); 2497 WebRect tallDiv(200, 300, 400, 800);
2491 WebPoint doubleTapPointWide(wideDiv.x + 50, wideDiv.y + 50); 2498 WebPoint doubleTapPointWide(wideDiv.x + 50, wideDiv.y + 50);
2492 WebPoint doubleTapPointTall(tallDiv.x + 50, tallDiv.y + 50); 2499 WebPoint doubleTapPointTall(tallDiv.x + 50, tallDiv.y + 50);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2524 } 2531 }
2525 2532
2526 TEST_P(ParameterizedWebFrameTest, DivAutoZoomWideDivTest) 2533 TEST_P(ParameterizedWebFrameTest, DivAutoZoomWideDivTest)
2527 { 2534 {
2528 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html"); 2535 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html");
2529 2536
2530 const float deviceScaleFactor = 2.0f; 2537 const float deviceScaleFactor = 2.0f;
2531 int viewportWidth = 640 / deviceScaleFactor; 2538 int viewportWidth = 640 / deviceScaleFactor;
2532 int viewportHeight = 1280 / deviceScaleFactor; 2539 int viewportHeight = 1280 / deviceScaleFactor;
2533 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2540 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2534 FrameTestHelpers::WebViewHelper webViewHelper(this); 2541 FrameTestHelpers::WebViewHelper webViewHelper;
2535 webViewHelper.initializeAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test .html", false, nullptr, nullptr, nullptr, configureAndroid); 2542 webViewHelper.initializeAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test .html", false, nullptr, nullptr, nullptr, configureAndroid);
2536 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2543 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2537 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2544 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2538 webViewHelper.webView()->setPageScaleFactor(1.0f); 2545 webViewHelper.webView()->setPageScaleFactor(1.0f);
2539 webViewHelper.webView()->updateAllLifecyclePhases(); 2546 webViewHelper.webView()->updateAllLifecyclePhases();
2540 2547
2541 webViewHelper.webView()->enableFakePageScaleAnimationForTesting(true); 2548 webViewHelper.webView()->enableFakePageScaleAnimationForTesting(true);
2542 2549
2543 float doubleTapZoomAlreadyLegibleScale = webViewHelper.webView()->minimumPag eScaleFactor() * doubleTapZoomAlreadyLegibleRatio; 2550 float doubleTapZoomAlreadyLegibleScale = webViewHelper.webView()->minimumPag eScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
2544 2551
(...skipping 11 matching lines...) Expand all
2556 TEST_P(ParameterizedWebFrameTest, DivAutoZoomVeryTallTest) 2563 TEST_P(ParameterizedWebFrameTest, DivAutoZoomVeryTallTest)
2557 { 2564 {
2558 // When a block is taller than the viewport and a zoom targets a lower part 2565 // When a block is taller than the viewport and a zoom targets a lower part
2559 // of it, then we should keep the target point onscreen instead of snapping 2566 // of it, then we should keep the target point onscreen instead of snapping
2560 // back up the top of the block. 2567 // back up the top of the block.
2561 registerMockedHttpURLLoad("very_tall_div.html"); 2568 registerMockedHttpURLLoad("very_tall_div.html");
2562 2569
2563 const float deviceScaleFactor = 2.0f; 2570 const float deviceScaleFactor = 2.0f;
2564 int viewportWidth = 640 / deviceScaleFactor; 2571 int viewportWidth = 640 / deviceScaleFactor;
2565 int viewportHeight = 1280 / deviceScaleFactor; 2572 int viewportHeight = 1280 / deviceScaleFactor;
2566 FrameTestHelpers::WebViewHelper webViewHelper(this); 2573 FrameTestHelpers::WebViewHelper webViewHelper;
2567 webViewHelper.initializeAndLoad(m_baseURL + "very_tall_div.html", true, null ptr, nullptr, nullptr, configureAndroid); 2574 webViewHelper.initializeAndLoad(m_baseURL + "very_tall_div.html", true, null ptr, nullptr, nullptr, configureAndroid);
2568 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2575 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2569 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2576 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2570 webViewHelper.webView()->setPageScaleFactor(1.0f); 2577 webViewHelper.webView()->setPageScaleFactor(1.0f);
2571 webViewHelper.webView()->updateAllLifecyclePhases(); 2578 webViewHelper.webView()->updateAllLifecyclePhases();
2572 2579
2573 WebRect div(200, 300, 400, 5000); 2580 WebRect div(200, 300, 400, 5000);
2574 WebPoint point(div.x + 50, div.y + 3000); 2581 WebPoint point(div.x + 50, div.y + 3000);
2575 float scale; 2582 float scale;
2576 WebPoint scroll; 2583 WebPoint scroll;
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
2848 simulateDoubleTap(webViewHelper.webView(), doubleTapPoint, scale); 2855 simulateDoubleTap(webViewHelper.webView(), doubleTapPoint, scale);
2849 EXPECT_FLOAT_EQ(webViewHelper.webView()->minimumPageScaleFactor(), scale); 2856 EXPECT_FLOAT_EQ(webViewHelper.webView()->minimumPageScaleFactor(), scale);
2850 simulateDoubleTap(webViewHelper.webView(), doubleTapPoint, scale); 2857 simulateDoubleTap(webViewHelper.webView(), doubleTapPoint, scale);
2851 EXPECT_FLOAT_EQ(legibleScale, scale); 2858 EXPECT_FLOAT_EQ(legibleScale, scale);
2852 } 2859 }
2853 2860
2854 TEST_P(ParameterizedWebFrameTest, BlockBoundTest) 2861 TEST_P(ParameterizedWebFrameTest, BlockBoundTest)
2855 { 2862 {
2856 registerMockedHttpURLLoad("block_bound.html"); 2863 registerMockedHttpURLLoad("block_bound.html");
2857 2864
2858 FrameTestHelpers::WebViewHelper webViewHelper(this); 2865 FrameTestHelpers::WebViewHelper webViewHelper;
2859 webViewHelper.initializeAndLoad(m_baseURL + "block_bound.html", false, nullp tr, nullptr, nullptr, configureAndroid); 2866 webViewHelper.initializeAndLoad(m_baseURL + "block_bound.html", false, nullp tr, nullptr, nullptr, configureAndroid);
2860 2867
2861 IntRect rectBack = IntRect(0, 0, 200, 200); 2868 IntRect rectBack = IntRect(0, 0, 200, 200);
2862 IntRect rectLeftTop = IntRect(10, 10, 80, 80); 2869 IntRect rectLeftTop = IntRect(10, 10, 80, 80);
2863 IntRect rectRightBottom = IntRect(110, 110, 80, 80); 2870 IntRect rectRightBottom = IntRect(110, 110, 80, 80);
2864 IntRect blockBound; 2871 IntRect blockBound;
2865 2872
2866 blockBound = IntRect(webViewHelper.webView()->computeBlockBound(WebPoint(9, 9), true)); 2873 blockBound = IntRect(webViewHelper.webView()->computeBlockBound(WebPoint(9, 9), true));
2867 EXPECT_RECT_EQ(rectBack, blockBound); 2874 EXPECT_RECT_EQ(rectBack, blockBound);
2868 2875
(...skipping 17 matching lines...) Expand all
2886 } 2893 }
2887 2894
2888 TEST_P(ParameterizedWebFrameTest, DivMultipleTargetZoomMultipleDivsTest) 2895 TEST_P(ParameterizedWebFrameTest, DivMultipleTargetZoomMultipleDivsTest)
2889 { 2896 {
2890 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html"); 2897 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
2891 2898
2892 const float deviceScaleFactor = 2.0f; 2899 const float deviceScaleFactor = 2.0f;
2893 int viewportWidth = 640 / deviceScaleFactor; 2900 int viewportWidth = 640 / deviceScaleFactor;
2894 int viewportHeight = 1280 / deviceScaleFactor; 2901 int viewportHeight = 1280 / deviceScaleFactor;
2895 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2902 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2896 FrameTestHelpers::WebViewHelper webViewHelper(this); 2903 FrameTestHelpers::WebViewHelper webViewHelper;
2897 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html"); 2904 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html");
2898 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2905 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2899 webViewHelper.webView()->setDefaultPageScaleLimits(0.5f, 4); 2906 webViewHelper.webView()->setDefaultPageScaleLimits(0.5f, 4);
2900 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2907 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2901 webViewHelper.webView()->setPageScaleFactor(0.5f); 2908 webViewHelper.webView()->setPageScaleFactor(0.5f);
2902 webViewHelper.webView()->setMaximumLegibleScale(1.f); 2909 webViewHelper.webView()->setMaximumLegibleScale(1.f);
2903 webViewHelper.webView()->updateAllLifecyclePhases(); 2910 webViewHelper.webView()->updateAllLifecyclePhases();
2904 2911
2905 webViewHelper.webView()->enableFakePageScaleAnimationForTesting(true); 2912 webViewHelper.webView()->enableFakePageScaleAnimationForTesting(true);
2906 2913
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
3158 3165
3159 // There should be no change at all since the textbox is fully visible alrea dy. 3166 // There should be no change at all since the textbox is fully visible alrea dy.
3160 EXPECT_EQ(initialScale, scale); 3167 EXPECT_EQ(initialScale, scale);
3161 EXPECT_FALSE(needAnimation); 3168 EXPECT_FALSE(needAnimation);
3162 } 3169 }
3163 3170
3164 TEST_P(ParameterizedWebFrameTest, CharacterIndexAtPointWithPinchZoom) 3171 TEST_P(ParameterizedWebFrameTest, CharacterIndexAtPointWithPinchZoom)
3165 { 3172 {
3166 registerMockedHttpURLLoad("sometext.html"); 3173 registerMockedHttpURLLoad("sometext.html");
3167 3174
3168 FrameTestHelpers::WebViewHelper webViewHelper(this); 3175 FrameTestHelpers::WebViewHelper webViewHelper;
3169 webViewHelper.initializeAndLoad(m_baseURL + "sometext.html"); 3176 webViewHelper.initializeAndLoad(m_baseURL + "sometext.html");
3170 webViewHelper.resize(WebSize(640, 480)); 3177 webViewHelper.resize(WebSize(640, 480));
3171 3178
3172 webViewHelper.webView()->setPageScaleFactor(2); 3179 webViewHelper.webView()->setPageScaleFactor(2);
3173 webViewHelper.webView()->setVisualViewportOffset(WebFloatPoint(50, 60)); 3180 webViewHelper.webView()->setVisualViewportOffset(WebFloatPoint(50, 60));
3174 3181
3175 WebRect baseRect; 3182 WebRect baseRect;
3176 WebRect extentRect; 3183 WebRect extentRect;
3177 3184
3178 WebLocalFrame* mainFrame = webViewHelper.webView()->mainFrame()->toWebLocalF rame(); 3185 WebLocalFrame* mainFrame = webViewHelper.webView()->mainFrame()->toWebLocalF rame();
3179 size_t ix = mainFrame->characterIndexForPoint(WebPoint(320, 388)); 3186 size_t ix = mainFrame->characterIndexForPoint(WebPoint(320, 388));
3180 3187
3181 EXPECT_EQ(2ul, ix); 3188 EXPECT_EQ(2ul, ix);
3182 } 3189 }
3183 3190
3184 TEST_P(ParameterizedWebFrameTest, FirstRectForCharacterRangeWithPinchZoom) 3191 TEST_P(ParameterizedWebFrameTest, FirstRectForCharacterRangeWithPinchZoom)
3185 { 3192 {
3186 registerMockedHttpURLLoad("textbox.html"); 3193 registerMockedHttpURLLoad("textbox.html");
3187 3194
3188 FrameTestHelpers::WebViewHelper webViewHelper(this); 3195 FrameTestHelpers::WebViewHelper webViewHelper;
3189 webViewHelper.initializeAndLoad(m_baseURL + "textbox.html", true); 3196 webViewHelper.initializeAndLoad(m_baseURL + "textbox.html", true);
3190 webViewHelper.resize(WebSize(640, 480)); 3197 webViewHelper.resize(WebSize(640, 480));
3191 3198
3192 WebLocalFrame* mainFrame = webViewHelper.webView()->mainFrame()->toWebLocalF rame(); 3199 WebLocalFrame* mainFrame = webViewHelper.webView()->mainFrame()->toWebLocalF rame();
3193 mainFrame->executeScript(WebScriptSource("selectRange();")); 3200 mainFrame->executeScript(WebScriptSource("selectRange();"));
3194 3201
3195 WebRect oldRect; 3202 WebRect oldRect;
3196 mainFrame->firstRectForCharacterRange(0, 5, oldRect); 3203 mainFrame->firstRectForCharacterRange(0, 5, oldRect);
3197 3204
3198 WebFloatPoint visualOffset(100, 130); 3205 WebFloatPoint visualOffset(100, 130);
(...skipping 21 matching lines...) Expand all
3220 } 3227 }
3221 }; 3228 };
3222 3229
3223 TEST_P(ParameterizedWebFrameTest, ReloadDoesntSetRedirect) 3230 TEST_P(ParameterizedWebFrameTest, ReloadDoesntSetRedirect)
3224 { 3231 {
3225 // Test for case in http://crbug.com/73104. Reloading a frame very quickly 3232 // Test for case in http://crbug.com/73104. Reloading a frame very quickly
3226 // would sometimes call decidePolicyForNavigation with isRedirect=true 3233 // would sometimes call decidePolicyForNavigation with isRedirect=true
3227 registerMockedHttpURLLoad("form.html"); 3234 registerMockedHttpURLLoad("form.html");
3228 3235
3229 TestReloadDoesntRedirectWebFrameClient webFrameClient; 3236 TestReloadDoesntRedirectWebFrameClient webFrameClient;
3230 FrameTestHelpers::WebViewHelper webViewHelper(this); 3237 FrameTestHelpers::WebViewHelper webViewHelper;
3231 webViewHelper.initializeAndLoad(m_baseURL + "form.html", false, &webFrameCli ent); 3238 webViewHelper.initializeAndLoad(m_baseURL + "form.html", false, &webFrameCli ent);
3232 3239
3233 webViewHelper.webView()->mainFrame()->reload(WebFrameLoadType::ReloadBypassi ngCache); 3240 webViewHelper.webView()->mainFrame()->reload(WebFrameLoadType::ReloadBypassi ngCache);
3234 // start another reload before request is delivered. 3241 // start another reload before request is delivered.
3235 FrameTestHelpers::reloadFrameIgnoringCache(webViewHelper.webView()->mainFram e()); 3242 FrameTestHelpers::reloadFrameIgnoringCache(webViewHelper.webView()->mainFram e());
3236 } 3243 }
3237 3244
3238 class ClearScrollStateOnCommitWebFrameClient : public FrameTestHelpers::TestWebF rameClient { 3245 class ClearScrollStateOnCommitWebFrameClient : public FrameTestHelpers::TestWebF rameClient {
3239 public: 3246 public:
3240 void didCommitProvisionalLoad(WebLocalFrame* frame, const WebHistoryItem&, W ebHistoryCommitType) override 3247 void didCommitProvisionalLoad(WebLocalFrame* frame, const WebHistoryItem&, W ebHistoryCommitType) override
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3287 EXPECT_EQ(0, webViewHelper.webView()->mainFrame()->scrollOffset().height); 3294 EXPECT_EQ(0, webViewHelper.webView()->mainFrame()->scrollOffset().height);
3288 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 3295 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
3289 } 3296 }
3290 3297
3291 TEST_P(ParameterizedWebFrameTest, ReloadWhileProvisional) 3298 TEST_P(ParameterizedWebFrameTest, ReloadWhileProvisional)
3292 { 3299 {
3293 // Test that reloading while the previous load is still pending does not cau se the initial 3300 // Test that reloading while the previous load is still pending does not cau se the initial
3294 // request to get lost. 3301 // request to get lost.
3295 registerMockedHttpURLLoad("fixed_layout.html"); 3302 registerMockedHttpURLLoad("fixed_layout.html");
3296 3303
3297 FrameTestHelpers::WebViewHelper webViewHelper(this); 3304 FrameTestHelpers::WebViewHelper webViewHelper;
3298 webViewHelper.initialize(); 3305 webViewHelper.initialize();
3299 WebURLRequest request; 3306 WebURLRequest request;
3300 request.setURL(toKURL(m_baseURL + "fixed_layout.html")); 3307 request.setURL(toKURL(m_baseURL + "fixed_layout.html"));
3301 request.setRequestorOrigin(WebSecurityOrigin::createUnique()); 3308 request.setRequestorOrigin(WebSecurityOrigin::createUnique());
3302 webViewHelper.webView()->mainFrame()->loadRequest(request); 3309 webViewHelper.webView()->mainFrame()->loadRequest(request);
3303 // start reload before first request is delivered. 3310 // start reload before first request is delivered.
3304 FrameTestHelpers::reloadFrameIgnoringCache(webViewHelper.webView()->mainFram e()); 3311 FrameTestHelpers::reloadFrameIgnoringCache(webViewHelper.webView()->mainFram e());
3305 3312
3306 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource (); 3313 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource ();
3307 ASSERT_TRUE(dataSource); 3314 ASSERT_TRUE(dataSource);
3308 EXPECT_EQ(toKURL(m_baseURL + "fixed_layout.html"), KURL(dataSource->request( ).url())); 3315 EXPECT_EQ(toKURL(m_baseURL + "fixed_layout.html"), KURL(dataSource->request( ).url()));
3309 } 3316 }
3310 3317
3311 TEST_P(ParameterizedWebFrameTest, AppendRedirects) 3318 TEST_P(ParameterizedWebFrameTest, AppendRedirects)
3312 { 3319 {
3313 const std::string firstURL = "about:blank"; 3320 const std::string firstURL = "about:blank";
3314 const std::string secondURL = "http://internal.test"; 3321 const std::string secondURL = "http://internal.test";
3315 3322
3316 FrameTestHelpers::WebViewHelper webViewHelper(this); 3323 FrameTestHelpers::WebViewHelper webViewHelper;
3317 webViewHelper.initializeAndLoad(firstURL, true); 3324 webViewHelper.initializeAndLoad(firstURL, true);
3318 3325
3319 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource (); 3326 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource ();
3320 ASSERT_TRUE(dataSource); 3327 ASSERT_TRUE(dataSource);
3321 dataSource->appendRedirect(toKURL(secondURL)); 3328 dataSource->appendRedirect(toKURL(secondURL));
3322 3329
3323 WebVector<WebURL> redirects; 3330 WebVector<WebURL> redirects;
3324 dataSource->redirectChain(redirects); 3331 dataSource->redirectChain(redirects);
3325 ASSERT_EQ(2U, redirects.size()); 3332 ASSERT_EQ(2U, redirects.size());
3326 EXPECT_EQ(toKURL(firstURL), KURL(redirects[0])); 3333 EXPECT_EQ(toKURL(firstURL), KURL(redirects[0]));
3327 EXPECT_EQ(toKURL(secondURL), KURL(redirects[1])); 3334 EXPECT_EQ(toKURL(secondURL), KURL(redirects[1]));
3328 } 3335 }
3329 3336
3330 TEST_P(ParameterizedWebFrameTest, IframeRedirect) 3337 TEST_P(ParameterizedWebFrameTest, IframeRedirect)
3331 { 3338 {
3332 registerMockedHttpURLLoad("iframe_redirect.html"); 3339 registerMockedHttpURLLoad("iframe_redirect.html");
3333 registerMockedHttpURLLoad("visible_iframe.html"); 3340 registerMockedHttpURLLoad("visible_iframe.html");
3334 3341
3335 FrameTestHelpers::WebViewHelper webViewHelper(this); 3342 FrameTestHelpers::WebViewHelper webViewHelper;
3336 webViewHelper.initializeAndLoad(m_baseURL + "iframe_redirect.html", true); 3343 webViewHelper.initializeAndLoad(m_baseURL + "iframe_redirect.html", true);
3337 // Pump pending requests one more time. The test page loads script that navi gates. 3344 // Pump pending requests one more time. The test page loads script that navi gates.
3338 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame()); 3345 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame());
3339 3346
3340 WebFrame* iframe = webViewHelper.webView()->findFrameByName(WebString::fromU TF8("ifr"), nullptr); 3347 WebFrame* iframe = webViewHelper.webView()->findFrameByName(WebString::fromU TF8("ifr"), nullptr);
3341 ASSERT_TRUE(iframe); 3348 ASSERT_TRUE(iframe);
3342 WebDataSource* iframeDataSource = iframe->dataSource(); 3349 WebDataSource* iframeDataSource = iframe->dataSource();
3343 ASSERT_TRUE(iframeDataSource); 3350 ASSERT_TRUE(iframeDataSource);
3344 WebVector<WebURL> redirects; 3351 WebVector<WebURL> redirects;
3345 iframeDataSource->redirectChain(redirects); 3352 iframeDataSource->redirectChain(redirects);
3346 ASSERT_EQ(2U, redirects.size()); 3353 ASSERT_EQ(2U, redirects.size());
3347 EXPECT_EQ(toKURL("about:blank"), KURL(redirects[0])); 3354 EXPECT_EQ(toKURL("about:blank"), KURL(redirects[0]));
3348 EXPECT_EQ(toKURL("http://internal.test/visible_iframe.html"), KURL(redirects [1])); 3355 EXPECT_EQ(toKURL("http://internal.test/visible_iframe.html"), KURL(redirects [1]));
3349 } 3356 }
3350 3357
3351 TEST_P(ParameterizedWebFrameTest, ClearFocusedNodeTest) 3358 TEST_P(ParameterizedWebFrameTest, ClearFocusedNodeTest)
3352 { 3359 {
3353 registerMockedHttpURLLoad("iframe_clear_focused_node_test.html"); 3360 registerMockedHttpURLLoad("iframe_clear_focused_node_test.html");
3354 registerMockedHttpURLLoad("autofocus_input_field_iframe.html"); 3361 registerMockedHttpURLLoad("autofocus_input_field_iframe.html");
3355 3362
3356 FrameTestHelpers::WebViewHelper webViewHelper(this); 3363 FrameTestHelpers::WebViewHelper webViewHelper;
3357 webViewHelper.initializeAndLoad(m_baseURL + "iframe_clear_focused_node_test. html", true); 3364 webViewHelper.initializeAndLoad(m_baseURL + "iframe_clear_focused_node_test. html", true);
3358 3365
3359 // Clear the focused node. 3366 // Clear the focused node.
3360 webViewHelper.webView()->clearFocusedElement(); 3367 webViewHelper.webView()->clearFocusedElement();
3361 3368
3362 // Now retrieve the FocusedNode and test it should be null. 3369 // Now retrieve the FocusedNode and test it should be null.
3363 EXPECT_EQ(0, webViewHelper.webView()->focusedElement()); 3370 EXPECT_EQ(0, webViewHelper.webView()->focusedElement());
3364 } 3371 }
3365 3372
3366 // Implementation of WebFrameClient that tracks the v8 contexts that are created 3373 // Implementation of WebFrameClient that tracks the v8 contexts that are created
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
3419 3426
3420 TEST_P(ParameterizedWebFrameTest, ContextNotificationsLoadUnload) 3427 TEST_P(ParameterizedWebFrameTest, ContextNotificationsLoadUnload)
3421 { 3428 {
3422 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 3429 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
3423 3430
3424 registerMockedHttpURLLoad("context_notifications_test.html"); 3431 registerMockedHttpURLLoad("context_notifications_test.html");
3425 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 3432 registerMockedHttpURLLoad("context_notifications_test_frame.html");
3426 3433
3427 // Load a frame with an iframe, make sure we get the right create notificati ons. 3434 // Load a frame with an iframe, make sure we get the right create notificati ons.
3428 ContextLifetimeTestWebFrameClient webFrameClient; 3435 ContextLifetimeTestWebFrameClient webFrameClient;
3429 FrameTestHelpers::WebViewHelper webViewHelper(this); 3436 FrameTestHelpers::WebViewHelper webViewHelper;
3430 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient); 3437 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient);
3431 3438
3432 WebFrame* mainFrame = webViewHelper.webView()->mainFrame(); 3439 WebFrame* mainFrame = webViewHelper.webView()->mainFrame();
3433 WebFrame* childFrame = mainFrame->firstChild(); 3440 WebFrame* childFrame = mainFrame->firstChild();
3434 3441
3435 ASSERT_EQ(2u, webFrameClient.createNotifications.size()); 3442 ASSERT_EQ(2u, webFrameClient.createNotifications.size());
3436 EXPECT_EQ(0u, webFrameClient.releaseNotifications.size()); 3443 EXPECT_EQ(0u, webFrameClient.releaseNotifications.size());
3437 3444
3438 auto& firstCreateNotification = webFrameClient.createNotifications[0]; 3445 auto& firstCreateNotification = webFrameClient.createNotifications[0];
3439 auto& secondCreateNotification = webFrameClient.createNotifications[1]; 3446 auto& secondCreateNotification = webFrameClient.createNotifications[1];
(...skipping 18 matching lines...) Expand all
3458 } 3465 }
3459 3466
3460 TEST_P(ParameterizedWebFrameTest, ContextNotificationsReload) 3467 TEST_P(ParameterizedWebFrameTest, ContextNotificationsReload)
3461 { 3468 {
3462 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 3469 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
3463 3470
3464 registerMockedHttpURLLoad("context_notifications_test.html"); 3471 registerMockedHttpURLLoad("context_notifications_test.html");
3465 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 3472 registerMockedHttpURLLoad("context_notifications_test_frame.html");
3466 3473
3467 ContextLifetimeTestWebFrameClient webFrameClient; 3474 ContextLifetimeTestWebFrameClient webFrameClient;
3468 FrameTestHelpers::WebViewHelper webViewHelper(this); 3475 FrameTestHelpers::WebViewHelper webViewHelper;
3469 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient); 3476 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient);
3470 3477
3471 // Refresh, we should get two release notifications and two more create noti fications. 3478 // Refresh, we should get two release notifications and two more create noti fications.
3472 FrameTestHelpers::reloadFrame(webViewHelper.webView()->mainFrame()); 3479 FrameTestHelpers::reloadFrame(webViewHelper.webView()->mainFrame());
3473 ASSERT_EQ(4u, webFrameClient.createNotifications.size()); 3480 ASSERT_EQ(4u, webFrameClient.createNotifications.size());
3474 ASSERT_EQ(2u, webFrameClient.releaseNotifications.size()); 3481 ASSERT_EQ(2u, webFrameClient.releaseNotifications.size());
3475 3482
3476 // The two release notifications we got should be exactly the same as the fi rst two create notifications. 3483 // The two release notifications we got should be exactly the same as the fi rst two create notifications.
3477 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) { 3484 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) {
3478 EXPECT_TRUE(webFrameClient.releaseNotifications[i]->Equals( 3485 EXPECT_TRUE(webFrameClient.releaseNotifications[i]->Equals(
(...skipping 17 matching lines...) Expand all
3496 3503
3497 TEST_P(ParameterizedWebFrameTest, ContextNotificationsIsolatedWorlds) 3504 TEST_P(ParameterizedWebFrameTest, ContextNotificationsIsolatedWorlds)
3498 { 3505 {
3499 v8::Isolate* isolate = v8::Isolate::GetCurrent(); 3506 v8::Isolate* isolate = v8::Isolate::GetCurrent();
3500 v8::HandleScope handleScope(isolate); 3507 v8::HandleScope handleScope(isolate);
3501 3508
3502 registerMockedHttpURLLoad("context_notifications_test.html"); 3509 registerMockedHttpURLLoad("context_notifications_test.html");
3503 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 3510 registerMockedHttpURLLoad("context_notifications_test_frame.html");
3504 3511
3505 ContextLifetimeTestWebFrameClient webFrameClient; 3512 ContextLifetimeTestWebFrameClient webFrameClient;
3506 FrameTestHelpers::WebViewHelper webViewHelper(this); 3513 FrameTestHelpers::WebViewHelper webViewHelper;
3507 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient); 3514 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient);
3508 3515
3509 // Add an isolated world. 3516 // Add an isolated world.
3510 webFrameClient.reset(); 3517 webFrameClient.reset();
3511 3518
3512 int isolatedWorldId = 42; 3519 int isolatedWorldId = 42;
3513 WebScriptSource scriptSource("hi!"); 3520 WebScriptSource scriptSource("hi!");
3514 int numSources = 1; 3521 int numSources = 1;
3515 int extensionGroup = 0; 3522 int extensionGroup = 0;
3516 webViewHelper.webView()->mainFrame()->executeScriptInIsolatedWorld(isolatedW orldId, &scriptSource, numSources, extensionGroup); 3523 webViewHelper.webView()->mainFrame()->executeScriptInIsolatedWorld(isolatedW orldId, &scriptSource, numSources, extensionGroup);
(...skipping 17 matching lines...) Expand all
3534 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) { 3541 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) {
3535 if (webFrameClient.releaseNotifications[i]->Equals(webFrameClient.create Notifications[0].get())) 3542 if (webFrameClient.releaseNotifications[i]->Equals(webFrameClient.create Notifications[0].get()))
3536 ++matchCount; 3543 ++matchCount;
3537 } 3544 }
3538 EXPECT_EQ(1, matchCount); 3545 EXPECT_EQ(1, matchCount);
3539 } 3546 }
3540 3547
3541 TEST_P(ParameterizedWebFrameTest, FindInPage) 3548 TEST_P(ParameterizedWebFrameTest, FindInPage)
3542 { 3549 {
3543 registerMockedHttpURLLoad("find.html"); 3550 registerMockedHttpURLLoad("find.html");
3544 FrameTestHelpers::WebViewHelper webViewHelper(this); 3551 FrameTestHelpers::WebViewHelper webViewHelper;
3545 webViewHelper.initializeAndLoad(m_baseURL + "find.html"); 3552 webViewHelper.initializeAndLoad(m_baseURL + "find.html");
3546 ASSERT_TRUE(webViewHelper.webView()->mainFrameImpl()); 3553 ASSERT_TRUE(webViewHelper.webView()->mainFrameImpl());
3547 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl(); 3554 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl();
3548 const int findIdentifier = 12345; 3555 const int findIdentifier = 12345;
3549 WebFindOptions options; 3556 WebFindOptions options;
3550 3557
3551 // Find in a <div> element. 3558 // Find in a <div> element.
3552 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false)); 3559 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false));
3553 frame->stopFinding(WebLocalFrame::StopFindActionKeepSelection); 3560 frame->stopFinding(WebLocalFrame::StopFindActionKeepSelection);
3554 WebRange range = frame->selectionRange(); 3561 WebRange range = frame->selectionRange();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3591 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false)); 3598 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false));
3592 // If there are any matches, stopFinding will set the selection on the found text. 3599 // If there are any matches, stopFinding will set the selection on the found text.
3593 // However, we do not expect any matches, so check that the selection is nul l. 3600 // However, we do not expect any matches, so check that the selection is nul l.
3594 frame->stopFinding(WebLocalFrame::StopFindActionKeepSelection); 3601 frame->stopFinding(WebLocalFrame::StopFindActionKeepSelection);
3595 range = frame->selectionRange(); 3602 range = frame->selectionRange();
3596 ASSERT_TRUE(range.isNull()); 3603 ASSERT_TRUE(range.isNull());
3597 } 3604 }
3598 3605
3599 TEST_P(ParameterizedWebFrameTest, GetContentAsPlainText) 3606 TEST_P(ParameterizedWebFrameTest, GetContentAsPlainText)
3600 { 3607 {
3601 FrameTestHelpers::WebViewHelper webViewHelper(this); 3608 FrameTestHelpers::WebViewHelper webViewHelper;
3602 webViewHelper.initializeAndLoad("about:blank", true); 3609 webViewHelper.initializeAndLoad("about:blank", true);
3603 // We set the size because it impacts line wrapping, which changes the 3610 // We set the size because it impacts line wrapping, which changes the
3604 // resulting text value. 3611 // resulting text value.
3605 webViewHelper.resize(WebSize(640, 480)); 3612 webViewHelper.resize(WebSize(640, 480));
3606 WebFrame* frame = webViewHelper.webView()->mainFrame(); 3613 WebFrame* frame = webViewHelper.webView()->mainFrame();
3607 3614
3608 // Generate a simple test case. 3615 // Generate a simple test case.
3609 const char simpleSource[] = "<div>Foo bar</div><div></div>baz"; 3616 const char simpleSource[] = "<div>Foo bar</div><div></div>baz";
3610 KURL testURL = toKURL("about:blank"); 3617 KURL testURL = toKURL("about:blank");
3611 FrameTestHelpers::loadHTMLString(frame, simpleSource, testURL); 3618 FrameTestHelpers::loadHTMLString(frame, simpleSource, testURL);
(...skipping 21 matching lines...) Expand all
3633 EXPECT_EQ("Hello world\n\nsub\ntext", text.utf8()); 3640 EXPECT_EQ("Hello world\n\nsub\ntext", text.utf8());
3634 3641
3635 // Get the frame text where the subframe separator falls on the boundary of 3642 // Get the frame text where the subframe separator falls on the boundary of
3636 // what we'll take. There used to be a crash in this case. 3643 // what we'll take. There used to be a crash in this case.
3637 text = WebFrameContentDumper::dumpWebViewAsText(webViewHelper.webView(), 12) ; 3644 text = WebFrameContentDumper::dumpWebViewAsText(webViewHelper.webView(), 12) ;
3638 EXPECT_EQ("Hello world", text.utf8()); 3645 EXPECT_EQ("Hello world", text.utf8());
3639 } 3646 }
3640 3647
3641 TEST_P(ParameterizedWebFrameTest, GetFullHtmlOfPage) 3648 TEST_P(ParameterizedWebFrameTest, GetFullHtmlOfPage)
3642 { 3649 {
3643 FrameTestHelpers::WebViewHelper webViewHelper(this); 3650 FrameTestHelpers::WebViewHelper webViewHelper;
3644 webViewHelper.initializeAndLoad("about:blank", true); 3651 webViewHelper.initializeAndLoad("about:blank", true);
3645 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl(); 3652 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl();
3646 3653
3647 // Generate a simple test case. 3654 // Generate a simple test case.
3648 const char simpleSource[] = "<p>Hello</p><p>World</p>"; 3655 const char simpleSource[] = "<p>Hello</p><p>World</p>";
3649 KURL testURL = toKURL("about:blank"); 3656 KURL testURL = toKURL("about:blank");
3650 FrameTestHelpers::loadHTMLString(frame, simpleSource, testURL); 3657 FrameTestHelpers::loadHTMLString(frame, simpleSource, testURL);
3651 3658
3652 WebString text = WebFrameContentDumper::dumpWebViewAsText(webViewHelper.webV iew(), std::numeric_limits<size_t>::max()); 3659 WebString text = WebFrameContentDumper::dumpWebViewAsText(webViewHelper.webV iew(), std::numeric_limits<size_t>::max());
3653 EXPECT_EQ("Hello\n\nWorld", text.utf8()); 3660 EXPECT_EQ("Hello\n\nWorld", text.utf8());
(...skipping 24 matching lines...) Expand all
3678 { 3685 {
3679 frame->executeScript(WebScriptSource("window.history = 'replaced';")); 3686 frame->executeScript(WebScriptSource("window.history = 'replaced';"));
3680 } 3687 }
3681 }; 3688 };
3682 3689
3683 TEST_P(ParameterizedWebFrameTest, ExecuteScriptDuringDidCreateScriptContext) 3690 TEST_P(ParameterizedWebFrameTest, ExecuteScriptDuringDidCreateScriptContext)
3684 { 3691 {
3685 registerMockedHttpURLLoad("hello_world.html"); 3692 registerMockedHttpURLLoad("hello_world.html");
3686 3693
3687 TestExecuteScriptDuringDidCreateScriptContext webFrameClient; 3694 TestExecuteScriptDuringDidCreateScriptContext webFrameClient;
3688 FrameTestHelpers::WebViewHelper webViewHelper(this); 3695 FrameTestHelpers::WebViewHelper webViewHelper;
3689 webViewHelper.initializeAndLoad(m_baseURL + "hello_world.html", true, &webFr ameClient); 3696 webViewHelper.initializeAndLoad(m_baseURL + "hello_world.html", true, &webFr ameClient);
3690 3697
3691 FrameTestHelpers::reloadFrame(webViewHelper.webView()->mainFrame()); 3698 FrameTestHelpers::reloadFrame(webViewHelper.webView()->mainFrame());
3692 } 3699 }
3693 3700
3694 class FindUpdateWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 3701 class FindUpdateWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
3695 public: 3702 public:
3696 FindUpdateWebFrameClient() 3703 FindUpdateWebFrameClient()
3697 : m_findResultsAreReady(false) 3704 : m_findResultsAreReady(false)
3698 , m_count(-1) 3705 , m_count(-1)
(...skipping 21 matching lines...) Expand all
3720 bool m_findResultsAreReady; 3727 bool m_findResultsAreReady;
3721 int m_count; 3728 int m_count;
3722 int m_activeIndex; 3729 int m_activeIndex;
3723 }; 3730 };
3724 3731
3725 TEST_P(ParameterizedWebFrameTest, FindInPageMatchRects) 3732 TEST_P(ParameterizedWebFrameTest, FindInPageMatchRects)
3726 { 3733 {
3727 registerMockedHttpURLLoad("find_in_page_frame.html"); 3734 registerMockedHttpURLLoad("find_in_page_frame.html");
3728 3735
3729 FindUpdateWebFrameClient client; 3736 FindUpdateWebFrameClient client;
3730 FrameTestHelpers::WebViewHelper webViewHelper(this); 3737 FrameTestHelpers::WebViewHelper webViewHelper;
3731 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page_frame.html", true, &client); 3738 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page_frame.html", true, &client);
3732 webViewHelper.resize(WebSize(640, 480)); 3739 webViewHelper.resize(WebSize(640, 480));
3733 webViewHelper.webView()->setMaximumLegibleScale(1.f); 3740 webViewHelper.webView()->setMaximumLegibleScale(1.f);
3734 webViewHelper.webView()->updateAllLifecyclePhases(); 3741 webViewHelper.webView()->updateAllLifecyclePhases();
3735 runPendingTasks(); 3742 runPendingTasks();
3736 3743
3737 // Note that the 'result 19' in the <select> element is not expected to 3744 // Note that the 'result 19' in the <select> element is not expected to
3738 // produce a match. Also, results 00 and 01 are in a different frame that is 3745 // produce a match. Also, results 00 and 01 are in a different frame that is
3739 // not included in this test. 3746 // not included in this test.
3740 const char kFindString[] = "result"; 3747 const char kFindString[] = "result";
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
3833 EXPECT_TRUE(client.findResultsAreReady()); 3840 EXPECT_TRUE(client.findResultsAreReady());
3834 EXPECT_EQ(kActiveIndex, client.activeIndex()); 3841 EXPECT_EQ(kActiveIndex, client.activeIndex());
3835 } 3842 }
3836 3843
3837 TEST_P(ParameterizedWebFrameTest, FindOnDetachedFrame) 3844 TEST_P(ParameterizedWebFrameTest, FindOnDetachedFrame)
3838 { 3845 {
3839 registerMockedHttpURLLoad("find_in_page.html"); 3846 registerMockedHttpURLLoad("find_in_page.html");
3840 registerMockedHttpURLLoad("find_in_page_frame.html"); 3847 registerMockedHttpURLLoad("find_in_page_frame.html");
3841 3848
3842 FindUpdateWebFrameClient client; 3849 FindUpdateWebFrameClient client;
3843 FrameTestHelpers::WebViewHelper webViewHelper(this); 3850 FrameTestHelpers::WebViewHelper webViewHelper;
3844 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3851 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3845 webViewHelper.resize(WebSize(640, 480)); 3852 webViewHelper.resize(WebSize(640, 480));
3846 runPendingTasks(); 3853 runPendingTasks();
3847 3854
3848 const char kFindString[] = "result"; 3855 const char kFindString[] = "result";
3849 const int kFindIdentifier = 12345; 3856 const int kFindIdentifier = 12345;
3850 3857
3851 WebFindOptions options; 3858 WebFindOptions options;
3852 WebString searchText = WebString::fromUTF8(kFindString); 3859 WebString searchText = WebString::fromUTF8(kFindString);
3853 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 3860 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
(...skipping 16 matching lines...) Expand all
3870 runPendingTasks(); 3877 runPendingTasks();
3871 EXPECT_TRUE(client.findResultsAreReady()); 3878 EXPECT_TRUE(client.findResultsAreReady());
3872 } 3879 }
3873 3880
3874 TEST_P(ParameterizedWebFrameTest, FindDetachFrameBeforeScopeStrings) 3881 TEST_P(ParameterizedWebFrameTest, FindDetachFrameBeforeScopeStrings)
3875 { 3882 {
3876 registerMockedHttpURLLoad("find_in_page.html"); 3883 registerMockedHttpURLLoad("find_in_page.html");
3877 registerMockedHttpURLLoad("find_in_page_frame.html"); 3884 registerMockedHttpURLLoad("find_in_page_frame.html");
3878 3885
3879 FindUpdateWebFrameClient client; 3886 FindUpdateWebFrameClient client;
3880 FrameTestHelpers::WebViewHelper webViewHelper(this); 3887 FrameTestHelpers::WebViewHelper webViewHelper;
3881 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3888 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3882 webViewHelper.resize(WebSize(640, 480)); 3889 webViewHelper.resize(WebSize(640, 480));
3883 runPendingTasks(); 3890 runPendingTasks();
3884 3891
3885 const char kFindString[] = "result"; 3892 const char kFindString[] = "result";
3886 const int kFindIdentifier = 12345; 3893 const int kFindIdentifier = 12345;
3887 3894
3888 WebFindOptions options; 3895 WebFindOptions options;
3889 WebString searchText = WebString::fromUTF8(kFindString); 3896 WebString searchText = WebString::fromUTF8(kFindString);
3890 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 3897 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
(...skipping 15 matching lines...) Expand all
3906 runPendingTasks(); 3913 runPendingTasks();
3907 EXPECT_TRUE(client.findResultsAreReady()); 3914 EXPECT_TRUE(client.findResultsAreReady());
3908 } 3915 }
3909 3916
3910 TEST_P(ParameterizedWebFrameTest, FindDetachFrameWhileScopingStrings) 3917 TEST_P(ParameterizedWebFrameTest, FindDetachFrameWhileScopingStrings)
3911 { 3918 {
3912 registerMockedHttpURLLoad("find_in_page.html"); 3919 registerMockedHttpURLLoad("find_in_page.html");
3913 registerMockedHttpURLLoad("find_in_page_frame.html"); 3920 registerMockedHttpURLLoad("find_in_page_frame.html");
3914 3921
3915 FindUpdateWebFrameClient client; 3922 FindUpdateWebFrameClient client;
3916 FrameTestHelpers::WebViewHelper webViewHelper(this); 3923 FrameTestHelpers::WebViewHelper webViewHelper;
3917 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3924 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3918 webViewHelper.resize(WebSize(640, 480)); 3925 webViewHelper.resize(WebSize(640, 480));
3919 runPendingTasks(); 3926 runPendingTasks();
3920 3927
3921 const char kFindString[] = "result"; 3928 const char kFindString[] = "result";
3922 const int kFindIdentifier = 12345; 3929 const int kFindIdentifier = 12345;
3923 3930
3924 WebFindOptions options; 3931 WebFindOptions options;
3925 WebString searchText = WebString::fromUTF8(kFindString); 3932 WebString searchText = WebString::fromUTF8(kFindString);
3926 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 3933 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
(...skipping 14 matching lines...) Expand all
3941 3948
3942 runPendingTasks(); 3949 runPendingTasks();
3943 EXPECT_TRUE(client.findResultsAreReady()); 3950 EXPECT_TRUE(client.findResultsAreReady());
3944 } 3951 }
3945 3952
3946 TEST_P(ParameterizedWebFrameTest, ResetMatchCount) 3953 TEST_P(ParameterizedWebFrameTest, ResetMatchCount)
3947 { 3954 {
3948 registerMockedHttpURLLoad("find_in_generated_frame.html"); 3955 registerMockedHttpURLLoad("find_in_generated_frame.html");
3949 3956
3950 FindUpdateWebFrameClient client; 3957 FindUpdateWebFrameClient client;
3951 FrameTestHelpers::WebViewHelper webViewHelper(this); 3958 FrameTestHelpers::WebViewHelper webViewHelper;
3952 webViewHelper.initializeAndLoad(m_baseURL + "find_in_generated_frame.html", true, &client); 3959 webViewHelper.initializeAndLoad(m_baseURL + "find_in_generated_frame.html", true, &client);
3953 webViewHelper.resize(WebSize(640, 480)); 3960 webViewHelper.resize(WebSize(640, 480));
3954 runPendingTasks(); 3961 runPendingTasks();
3955 3962
3956 const char kFindString[] = "result"; 3963 const char kFindString[] = "result";
3957 const int kFindIdentifier = 12345; 3964 const int kFindIdentifier = 12345;
3958 3965
3959 WebFindOptions options; 3966 WebFindOptions options;
3960 WebString searchText = WebString::fromUTF8(kFindString); 3967 WebString searchText = WebString::fromUTF8(kFindString);
3961 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 3968 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
3962 3969
3963 // Check that child frame exists. 3970 // Check that child frame exists.
3964 EXPECT_TRUE(!!mainFrame->traverseNext(false)); 3971 EXPECT_TRUE(!!mainFrame->traverseNext(false));
3965 3972
3966 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3973 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3967 EXPECT_FALSE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false)); 3974 EXPECT_FALSE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false));
3968 3975
3969 runPendingTasks(); 3976 runPendingTasks();
3970 EXPECT_FALSE(client.findResultsAreReady()); 3977 EXPECT_FALSE(client.findResultsAreReady());
3971 3978
3972 mainFrame->ensureTextFinder().resetMatchCount(); 3979 mainFrame->ensureTextFinder().resetMatchCount();
3973 } 3980 }
3974 3981
3975 TEST_P(ParameterizedWebFrameTest, SetTickmarks) 3982 TEST_P(ParameterizedWebFrameTest, SetTickmarks)
3976 { 3983 {
3977 registerMockedHttpURLLoad("find.html"); 3984 registerMockedHttpURLLoad("find.html");
3978 3985
3979 FindUpdateWebFrameClient client; 3986 FindUpdateWebFrameClient client;
3980 FrameTestHelpers::WebViewHelper webViewHelper(this); 3987 FrameTestHelpers::WebViewHelper webViewHelper;
3981 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client); 3988 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client);
3982 webViewHelper.resize(WebSize(640, 480)); 3989 webViewHelper.resize(WebSize(640, 480));
3983 runPendingTasks(); 3990 runPendingTasks();
3984 3991
3985 const char kFindString[] = "foo"; 3992 const char kFindString[] = "foo";
3986 const int kFindIdentifier = 12345; 3993 const int kFindIdentifier = 12345;
3987 3994
3988 WebFindOptions options; 3995 WebFindOptions options;
3989 WebString searchText = WebString::fromUTF8(kFindString); 3996 WebString searchText = WebString::fromUTF8(kFindString);
3990 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 3997 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4023 Vector<IntRect> originalTickmarksAfterReset; 4030 Vector<IntRect> originalTickmarksAfterReset;
4024 scrollbar->getTickmarks(originalTickmarksAfterReset); 4031 scrollbar->getTickmarks(originalTickmarksAfterReset);
4025 EXPECT_EQ(originalTickmarks, originalTickmarksAfterReset); 4032 EXPECT_EQ(originalTickmarks, originalTickmarksAfterReset);
4026 } 4033 }
4027 4034
4028 TEST_P(ParameterizedWebFrameTest, FindInPageJavaScriptUpdatesDOM) 4035 TEST_P(ParameterizedWebFrameTest, FindInPageJavaScriptUpdatesDOM)
4029 { 4036 {
4030 registerMockedHttpURLLoad("find.html"); 4037 registerMockedHttpURLLoad("find.html");
4031 4038
4032 FindUpdateWebFrameClient client; 4039 FindUpdateWebFrameClient client;
4033 FrameTestHelpers::WebViewHelper webViewHelper(this); 4040 FrameTestHelpers::WebViewHelper webViewHelper;
4034 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client); 4041 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client);
4035 webViewHelper.resize(WebSize(640, 480)); 4042 webViewHelper.resize(WebSize(640, 480));
4036 runPendingTasks(); 4043 runPendingTasks();
4037 4044
4038 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 4045 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
4039 const int findIdentifier = 12345; 4046 const int findIdentifier = 12345;
4040 static const char* kFindString = "foo"; 4047 static const char* kFindString = "foo";
4041 WebString searchText = WebString::fromUTF8(kFindString); 4048 WebString searchText = WebString::fromUTF8(kFindString);
4042 WebFindOptions options; 4049 WebFindOptions options;
4043 bool activeNow; 4050 bool activeNow;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4098 4105
4099 TEST_P(ParameterizedWebFrameTest, SelectRange) 4106 TEST_P(ParameterizedWebFrameTest, SelectRange)
4100 { 4107 {
4101 WebLocalFrame* frame; 4108 WebLocalFrame* frame;
4102 WebRect startWebRect; 4109 WebRect startWebRect;
4103 WebRect endWebRect; 4110 WebRect endWebRect;
4104 4111
4105 registerMockedHttpURLLoad("select_range_basic.html"); 4112 registerMockedHttpURLLoad("select_range_basic.html");
4106 registerMockedHttpURLLoad("select_range_scroll.html"); 4113 registerMockedHttpURLLoad("select_range_scroll.html");
4107 4114
4108 FrameTestHelpers::WebViewHelper webViewHelper(this); 4115 FrameTestHelpers::WebViewHelper webViewHelper;
4109 initializeTextSelectionWebView(m_baseURL + "select_range_basic.html", &webVi ewHelper); 4116 initializeTextSelectionWebView(m_baseURL + "select_range_basic.html", &webVi ewHelper);
4110 frame = webViewHelper.webView()->mainFrameImpl(); 4117 frame = webViewHelper.webView()->mainFrameImpl();
4111 EXPECT_EQ("Some test text for testing.", selectionAsString(frame)); 4118 EXPECT_EQ("Some test text for testing.", selectionAsString(frame));
4112 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4119 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4113 frame->executeCommand(WebString::fromUTF8("Unselect")); 4120 frame->executeCommand(WebString::fromUTF8("Unselect"));
4114 EXPECT_EQ("", selectionAsString(frame)); 4121 EXPECT_EQ("", selectionAsString(frame));
4115 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 4122 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
4116 // On some devices, the above bottomRightMinusOne() causes the ending '.' no t selected. 4123 // On some devices, the above bottomRightMinusOne() causes the ending '.' no t selected.
4117 std::string selectionString = selectionAsString(frame); 4124 std::string selectionString = selectionAsString(frame);
4118 EXPECT_TRUE(selectionString == "Some test text for testing." 4125 EXPECT_TRUE(selectionString == "Some test text for testing."
(...skipping 14 matching lines...) Expand all
4133 4140
4134 TEST_P(ParameterizedWebFrameTest, SelectRangeInIframe) 4141 TEST_P(ParameterizedWebFrameTest, SelectRangeInIframe)
4135 { 4142 {
4136 WebFrame* frame; 4143 WebFrame* frame;
4137 WebRect startWebRect; 4144 WebRect startWebRect;
4138 WebRect endWebRect; 4145 WebRect endWebRect;
4139 4146
4140 registerMockedHttpURLLoad("select_range_iframe.html"); 4147 registerMockedHttpURLLoad("select_range_iframe.html");
4141 registerMockedHttpURLLoad("select_range_basic.html"); 4148 registerMockedHttpURLLoad("select_range_basic.html");
4142 4149
4143 FrameTestHelpers::WebViewHelper webViewHelper(this); 4150 FrameTestHelpers::WebViewHelper webViewHelper;
4144 initializeTextSelectionWebView(m_baseURL + "select_range_iframe.html", &webV iewHelper); 4151 initializeTextSelectionWebView(m_baseURL + "select_range_iframe.html", &webV iewHelper);
4145 frame = webViewHelper.webView()->mainFrame(); 4152 frame = webViewHelper.webView()->mainFrame();
4146 WebLocalFrame* subframe = frame->firstChild()->toWebLocalFrame(); 4153 WebLocalFrame* subframe = frame->firstChild()->toWebLocalFrame();
4147 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe)); 4154 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe));
4148 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4155 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4149 subframe->executeCommand(WebString::fromUTF8("Unselect")); 4156 subframe->executeCommand(WebString::fromUTF8("Unselect"));
4150 EXPECT_EQ("", selectionAsString(subframe)); 4157 EXPECT_EQ("", selectionAsString(subframe));
4151 subframe->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect) ); 4158 subframe->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect) );
4152 // On some devices, the above bottomRightMinusOne() causes the ending '.' no t selected. 4159 // On some devices, the above bottomRightMinusOne() causes the ending '.' no t selected.
4153 std::string selectionString = selectionAsString(subframe); 4160 std::string selectionString = selectionAsString(subframe);
4154 EXPECT_TRUE(selectionString == "Some test text for testing." 4161 EXPECT_TRUE(selectionString == "Some test text for testing."
4155 || selectionString == "Some test text for testing"); 4162 || selectionString == "Some test text for testing");
4156 } 4163 }
4157 4164
4158 TEST_P(ParameterizedWebFrameTest, SelectRangeDivContentEditable) 4165 TEST_P(ParameterizedWebFrameTest, SelectRangeDivContentEditable)
4159 { 4166 {
4160 WebLocalFrame* frame; 4167 WebLocalFrame* frame;
4161 WebRect startWebRect; 4168 WebRect startWebRect;
4162 WebRect endWebRect; 4169 WebRect endWebRect;
4163 4170
4164 registerMockedHttpURLLoad("select_range_div_editable.html"); 4171 registerMockedHttpURLLoad("select_range_div_editable.html");
4165 4172
4166 // Select the middle of an editable element, then try to extend the selectio n to the top of the document. 4173 // Select the middle of an editable element, then try to extend the selectio n to the top of the document.
4167 // The selection range should be clipped to the bounds of the editable eleme nt. 4174 // The selection range should be clipped to the bounds of the editable eleme nt.
4168 FrameTestHelpers::WebViewHelper webViewHelper(this); 4175 FrameTestHelpers::WebViewHelper webViewHelper;
4169 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper); 4176 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper);
4170 frame = webViewHelper.webView()->mainFrameImpl(); 4177 frame = webViewHelper.webView()->mainFrameImpl();
4171 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4178 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4172 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4179 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4173 4180
4174 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0)); 4181 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0));
4175 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame)); 4182 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame));
4176 4183
4177 // As above, but extending the selection to the bottom of the document. 4184 // As above, but extending the selection to the bottom of the document.
4178 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper); 4185 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper);
(...skipping 14 matching lines...) Expand all
4193 TEST_P(ParameterizedWebFrameTest, DISABLED_SelectRangeSpanContentEditable) 4200 TEST_P(ParameterizedWebFrameTest, DISABLED_SelectRangeSpanContentEditable)
4194 { 4201 {
4195 WebLocalFrame* frame; 4202 WebLocalFrame* frame;
4196 WebRect startWebRect; 4203 WebRect startWebRect;
4197 WebRect endWebRect; 4204 WebRect endWebRect;
4198 4205
4199 registerMockedHttpURLLoad("select_range_span_editable.html"); 4206 registerMockedHttpURLLoad("select_range_span_editable.html");
4200 4207
4201 // Select the middle of an editable element, then try to extend the selectio n to the top of the document. 4208 // Select the middle of an editable element, then try to extend the selectio n to the top of the document.
4202 // The selection range should be clipped to the bounds of the editable eleme nt. 4209 // The selection range should be clipped to the bounds of the editable eleme nt.
4203 FrameTestHelpers::WebViewHelper webViewHelper(this); 4210 FrameTestHelpers::WebViewHelper webViewHelper;
4204 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper); 4211 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper);
4205 frame = webViewHelper.webView()->mainFrameImpl(); 4212 frame = webViewHelper.webView()->mainFrameImpl();
4206 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4213 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4207 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4214 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4208 4215
4209 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0)); 4216 frame->selectRange(bottomRightMinusOne(endWebRect), WebPoint(0, 0));
4210 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame)); 4217 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame));
4211 4218
4212 // As above, but extending the selection to the bottom of the document. 4219 // As above, but extending the selection to the bottom of the document.
4213 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper); 4220 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper);
4214 frame = webViewHelper.webView()->mainFrameImpl(); 4221 frame = webViewHelper.webView()->mainFrameImpl();
4215 4222
4216 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4223 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4217 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 4224 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
4218 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4225 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4219 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4226 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4220 4227
4221 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4228 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4222 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4229 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4223 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480)); 4230 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480));
4224 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame)); 4231 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame));
4225 } 4232 }
4226 4233
4227 TEST_P(ParameterizedWebFrameTest, SelectRangeCanMoveSelectionStart) 4234 TEST_P(ParameterizedWebFrameTest, SelectRangeCanMoveSelectionStart)
4228 { 4235 {
4229 registerMockedHttpURLLoad("text_selection.html"); 4236 registerMockedHttpURLLoad("text_selection.html");
4230 FrameTestHelpers::WebViewHelper webViewHelper(this); 4237 FrameTestHelpers::WebViewHelper webViewHelper;
4231 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper); 4238 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper);
4232 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl(); 4239 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl();
4233 4240
4234 // Select second span. We can move the start to include the first span. 4241 // Select second span. We can move the start to include the first span.
4235 frame->executeScript(WebScriptSource("selectElement('header_2');")); 4242 frame->executeScript(WebScriptSource("selectElement('header_2');"));
4236 EXPECT_EQ("Header 2.", selectionAsString(frame)); 4243 EXPECT_EQ("Header 2.", selectionAsString(frame));
4237 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "header_2")), to pLeft(elementBounds(frame, "header_1"))); 4244 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "header_2")), to pLeft(elementBounds(frame, "header_1")));
4238 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame)); 4245 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame));
4239 4246
4240 // We can move the start and end together. 4247 // We can move the start and end together.
(...skipping 27 matching lines...) Expand all
4268 EXPECT_EQ("Editable 2.", selectionAsString(frame)); 4275 EXPECT_EQ("Editable 2.", selectionAsString(frame));
4269 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "editable_2")), topLeft(elementBounds(frame, "header_2"))); 4276 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "editable_2")), topLeft(elementBounds(frame, "header_2")));
4270 // positionForPoint returns the wrong values for contenteditable spans. See 4277 // positionForPoint returns the wrong values for contenteditable spans. See
4271 // http://crbug.com/238334. 4278 // http://crbug.com/238334.
4272 // EXPECT_EQ("[ Editable 1. Editable 2.", selectionAsString(frame)); 4279 // EXPECT_EQ("[ Editable 1. Editable 2.", selectionAsString(frame));
4273 } 4280 }
4274 4281
4275 TEST_P(ParameterizedWebFrameTest, SelectRangeCanMoveSelectionEnd) 4282 TEST_P(ParameterizedWebFrameTest, SelectRangeCanMoveSelectionEnd)
4276 { 4283 {
4277 registerMockedHttpURLLoad("text_selection.html"); 4284 registerMockedHttpURLLoad("text_selection.html");
4278 FrameTestHelpers::WebViewHelper webViewHelper(this); 4285 FrameTestHelpers::WebViewHelper webViewHelper;
4279 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper); 4286 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper);
4280 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl(); 4287 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl();
4281 4288
4282 // Select first span. We can move the end to include the second span. 4289 // Select first span. We can move the end to include the second span.
4283 frame->executeScript(WebScriptSource("selectElement('header_1');")); 4290 frame->executeScript(WebScriptSource("selectElement('header_1');"));
4284 EXPECT_EQ("Header 1.", selectionAsString(frame)); 4291 EXPECT_EQ("Header 1.", selectionAsString(frame));
4285 frame->selectRange(topLeft(elementBounds(frame, "header_1")), bottomRightMin usOne(elementBounds(frame, "header_2"))); 4292 frame->selectRange(topLeft(elementBounds(frame, "header_1")), bottomRightMin usOne(elementBounds(frame, "header_2")));
4286 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame)); 4293 EXPECT_EQ("Header 1. Header 2.", selectionAsString(frame));
4287 4294
4288 // We can move the start and end together. 4295 // We can move the start and end together.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4321 } 4328 }
4322 4329
4323 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtent) 4330 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtent)
4324 { 4331 {
4325 WebLocalFrameImpl* frame; 4332 WebLocalFrameImpl* frame;
4326 WebRect startWebRect; 4333 WebRect startWebRect;
4327 WebRect endWebRect; 4334 WebRect endWebRect;
4328 4335
4329 registerMockedHttpURLLoad("move_range_selection_extent.html"); 4336 registerMockedHttpURLLoad("move_range_selection_extent.html");
4330 4337
4331 FrameTestHelpers::WebViewHelper webViewHelper(this); 4338 FrameTestHelpers::WebViewHelper webViewHelper;
4332 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper); 4339 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper);
4333 frame = webViewHelper.webView()->mainFrameImpl(); 4340 frame = webViewHelper.webView()->mainFrameImpl();
4334 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4341 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4335 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4342 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4336 4343
4337 frame->moveRangeSelectionExtent(WebPoint(640, 480)); 4344 frame->moveRangeSelectionExtent(WebPoint(640, 480));
4338 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame)); 4345 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame));
4339 4346
4340 frame->moveRangeSelectionExtent(WebPoint(0, 0)); 4347 frame->moveRangeSelectionExtent(WebPoint(0, 0));
4341 EXPECT_EQ("16-char header. ", selectionAsString(frame)); 4348 EXPECT_EQ("16-char header. ", selectionAsString(frame));
(...skipping 13 matching lines...) Expand all
4355 } 4362 }
4356 4363
4357 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtentCannotCollapse) 4364 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtentCannotCollapse)
4358 { 4365 {
4359 WebLocalFrameImpl* frame; 4366 WebLocalFrameImpl* frame;
4360 WebRect startWebRect; 4367 WebRect startWebRect;
4361 WebRect endWebRect; 4368 WebRect endWebRect;
4362 4369
4363 registerMockedHttpURLLoad("move_range_selection_extent.html"); 4370 registerMockedHttpURLLoad("move_range_selection_extent.html");
4364 4371
4365 FrameTestHelpers::WebViewHelper webViewHelper(this); 4372 FrameTestHelpers::WebViewHelper webViewHelper;
4366 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper); 4373 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper);
4367 frame = webViewHelper.webView()->mainFrameImpl(); 4374 frame = webViewHelper.webView()->mainFrameImpl();
4368 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4375 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4369 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4376 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4370 4377
4371 frame->moveRangeSelectionExtent(bottomRightMinusOne(startWebRect)); 4378 frame->moveRangeSelectionExtent(bottomRightMinusOne(startWebRect));
4372 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4379 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4373 4380
4374 // Reset with swapped base and extent. 4381 // Reset with swapped base and extent.
4375 frame->selectRange(topLeft(endWebRect), bottomRightMinusOne(startWebRect)); 4382 frame->selectRange(topLeft(endWebRect), bottomRightMinusOne(startWebRect));
4376 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4383 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4377 4384
4378 frame->moveRangeSelectionExtent(bottomRightMinusOne(endWebRect)); 4385 frame->moveRangeSelectionExtent(bottomRightMinusOne(endWebRect));
4379 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4386 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4380 } 4387 }
4381 4388
4382 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtentScollsInputField) 4389 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtentScollsInputField)
4383 { 4390 {
4384 WebLocalFrameImpl* frame; 4391 WebLocalFrameImpl* frame;
4385 WebRect startWebRect; 4392 WebRect startWebRect;
4386 WebRect endWebRect; 4393 WebRect endWebRect;
4387 4394
4388 registerMockedHttpURLLoad("move_range_selection_extent_input_field.html"); 4395 registerMockedHttpURLLoad("move_range_selection_extent_input_field.html");
4389 4396
4390 FrameTestHelpers::WebViewHelper webViewHelper(this); 4397 FrameTestHelpers::WebViewHelper webViewHelper;
4391 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent_inpu t_field.html", &webViewHelper); 4398 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent_inpu t_field.html", &webViewHelper);
4392 frame = webViewHelper.webView()->mainFrameImpl(); 4399 frame = webViewHelper.webView()->mainFrameImpl();
4393 EXPECT_EQ("Length", selectionAsString(frame)); 4400 EXPECT_EQ("Length", selectionAsString(frame));
4394 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4401 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4395 4402
4396 EXPECT_EQ(0, frame->frame()->selection().rootEditableElement()->scrollLeft() ); 4403 EXPECT_EQ(0, frame->frame()->selection().rootEditableElement()->scrollLeft() );
4397 frame->moveRangeSelectionExtent(WebPoint(endWebRect.x + 500, endWebRect.y)); 4404 frame->moveRangeSelectionExtent(WebPoint(endWebRect.x + 500, endWebRect.y));
4398 EXPECT_GE(frame->frame()->selection().rootEditableElement()->scrollLeft(), 1 ); 4405 EXPECT_GE(frame->frame()->selection().rootEditableElement()->scrollLeft(), 1 );
4399 EXPECT_EQ("Lengthy text goes here.", selectionAsString(frame)); 4406 EXPECT_EQ("Lengthy text goes here.", selectionAsString(frame));
4400 } 4407 }
4401 4408
4402 static int computeOffset(LayoutObject* layoutObject, int x, int y) 4409 static int computeOffset(LayoutObject* layoutObject, int x, int y)
4403 { 4410 {
4404 return createVisiblePosition(layoutObject->positionForPoint(LayoutPoint(x, y ))).deepEquivalent().computeOffsetInContainerNode(); 4411 return createVisiblePosition(layoutObject->positionForPoint(LayoutPoint(x, y ))).deepEquivalent().computeOffsetInContainerNode();
4405 } 4412 }
4406 4413
4407 // positionForPoint returns the wrong values for contenteditable spans. See 4414 // positionForPoint returns the wrong values for contenteditable spans. See
4408 // http://crbug.com/238334. 4415 // http://crbug.com/238334.
4409 TEST_P(ParameterizedWebFrameTest, DISABLED_PositionForPointTest) 4416 TEST_P(ParameterizedWebFrameTest, DISABLED_PositionForPointTest)
4410 { 4417 {
4411 registerMockedHttpURLLoad("select_range_span_editable.html"); 4418 registerMockedHttpURLLoad("select_range_span_editable.html");
4412 FrameTestHelpers::WebViewHelper webViewHelper(this); 4419 FrameTestHelpers::WebViewHelper webViewHelper;
4413 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper); 4420 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper);
4414 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 4421 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
4415 LayoutObject* layoutObject = mainFrame->frame()->selection().rootEditableEle ment()->layoutObject(); 4422 LayoutObject* layoutObject = mainFrame->frame()->selection().rootEditableEle ment()->layoutObject();
4416 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1)); 4423 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1));
4417 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000)); 4424 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000));
4418 4425
4419 registerMockedHttpURLLoad("select_range_div_editable.html"); 4426 registerMockedHttpURLLoad("select_range_div_editable.html");
4420 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper); 4427 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper);
4421 mainFrame = webViewHelper.webView()->mainFrameImpl(); 4428 mainFrame = webViewHelper.webView()->mainFrameImpl();
4422 layoutObject = mainFrame->frame()->selection().rootEditableElement()->layout Object(); 4429 layoutObject = mainFrame->frame()->selection().rootEditableElement()->layout Object();
4423 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1)); 4430 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1));
4424 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000)); 4431 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000));
4425 } 4432 }
4426 4433
4427 #if !OS(MACOSX) && !OS(LINUX) 4434 #if !OS(MACOSX) && !OS(LINUX)
4428 TEST_P(ParameterizedWebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved) 4435 TEST_P(ParameterizedWebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved)
4429 { 4436 {
4430 registerMockedHttpURLLoad("move_caret.html"); 4437 registerMockedHttpURLLoad("move_caret.html");
4431 4438
4432 FrameTestHelpers::WebViewHelper webViewHelper(this); 4439 FrameTestHelpers::WebViewHelper webViewHelper;
4433 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper ); 4440 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper );
4434 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 4441 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
4435 4442
4436 WebRect initialStartRect; 4443 WebRect initialStartRect;
4437 WebRect initialEndRect; 4444 WebRect initialEndRect;
4438 WebRect startRect; 4445 WebRect startRect;
4439 WebRect endRect; 4446 WebRect endRect;
4440 4447
4441 frame->executeScript(WebScriptSource("selectRange();")); 4448 frame->executeScript(WebScriptSource("selectRange();"));
4442 webViewHelper.webView()->selectionBounds(initialStartRect, initialEndRect); 4449 webViewHelper.webView()->selectionBounds(initialStartRect, initialEndRect);
(...skipping 24 matching lines...) Expand all
4467 webViewHelper.webView()->selectionBounds(startRect, endRect); 4474 webViewHelper.webView()->selectionBounds(startRect, endRect);
4468 EXPECT_EQ(startRect, initialStartRect); 4475 EXPECT_EQ(startRect, initialStartRect);
4469 EXPECT_EQ(endRect, initialEndRect); 4476 EXPECT_EQ(endRect, initialEndRect);
4470 } 4477 }
4471 4478
4472 TEST_P(ParameterizedWebFrameTest, MoveCaretStaysHorizontallyAlignedWhenMoved) 4479 TEST_P(ParameterizedWebFrameTest, MoveCaretStaysHorizontallyAlignedWhenMoved)
4473 { 4480 {
4474 WebLocalFrameImpl* frame; 4481 WebLocalFrameImpl* frame;
4475 registerMockedHttpURLLoad("move_caret.html"); 4482 registerMockedHttpURLLoad("move_caret.html");
4476 4483
4477 FrameTestHelpers::WebViewHelper webViewHelper(this); 4484 FrameTestHelpers::WebViewHelper webViewHelper;
4478 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper ); 4485 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper );
4479 frame = (WebLocalFrameImpl*)webViewHelper.webView()->mainFrame(); 4486 frame = (WebLocalFrameImpl*)webViewHelper.webView()->mainFrame();
4480 4487
4481 WebRect initialStartRect; 4488 WebRect initialStartRect;
4482 WebRect initialEndRect; 4489 WebRect initialEndRect;
4483 WebRect startRect; 4490 WebRect startRect;
4484 WebRect endRect; 4491 WebRect endRect;
4485 4492
4486 frame->executeScript(WebScriptSource("selectCaret();")); 4493 frame->executeScript(WebScriptSource("selectCaret();"));
4487 webViewHelper.webView()->selectionBounds(initialStartRect, initialEndRect); 4494 webViewHelper.webView()->selectionBounds(initialStartRect, initialEndRect);
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
4663 4670
4664 registerMockedHttpURLLoad("select_range_basic.html"); 4671 registerMockedHttpURLLoad("select_range_basic.html");
4665 registerMockedHttpURLLoad("select_range_scroll.html"); 4672 registerMockedHttpURLLoad("select_range_scroll.html");
4666 4673
4667 int viewWidth = 500; 4674 int viewWidth = 500;
4668 int viewHeight = 500; 4675 int viewHeight = 500;
4669 4676
4670 CompositedSelectionBoundsTestWebViewClient fakeSelectionWebViewClient; 4677 CompositedSelectionBoundsTestWebViewClient fakeSelectionWebViewClient;
4671 CompositedSelectionBoundsTestLayerTreeView& fakeSelectionLayerTreeView = fak eSelectionWebViewClient.selectionLayerTreeView(); 4678 CompositedSelectionBoundsTestLayerTreeView& fakeSelectionLayerTreeView = fak eSelectionWebViewClient.selectionLayerTreeView();
4672 4679
4673 FrameTestHelpers::WebViewHelper webViewHelper(this); 4680 FrameTestHelpers::WebViewHelper webViewHelper;
4674 webViewHelper.initialize(true, nullptr, &fakeSelectionWebViewClient, nullptr ); 4681 webViewHelper.initialize(true, nullptr, &fakeSelectionWebViewClient, nullptr );
4675 webViewHelper.webView()->settings()->setDefaultFontSize(12); 4682 webViewHelper.webView()->settings()->setDefaultFontSize(12);
4676 webViewHelper.webView()->setDefaultPageScaleLimits(1, 1); 4683 webViewHelper.webView()->setDefaultPageScaleLimits(1, 1);
4677 webViewHelper.resize(WebSize(viewWidth, viewHeight)); 4684 webViewHelper.resize(WebSize(viewWidth, viewHeight));
4678 webViewHelper.webView()->setFocus(true); 4685 webViewHelper.webView()->setFocus(true);
4679 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "select_range_basic.html"); 4686 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "select_range_basic.html");
4680 4687
4681 // The frame starts with no selection. 4688 // The frame starts with no selection.
4682 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl(); 4689 WebLocalFrame* frame = webViewHelper.webView()->mainFrameImpl();
4683 ASSERT_TRUE(frame->hasSelection()); 4690 ASSERT_TRUE(frame->hasSelection());
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
4745 4752
4746 TEST_P(ParameterizedWebFrameTest, DisambiguationPopup) 4753 TEST_P(ParameterizedWebFrameTest, DisambiguationPopup)
4747 { 4754 {
4748 const std::string htmlFile = "disambiguation_popup.html"; 4755 const std::string htmlFile = "disambiguation_popup.html";
4749 registerMockedHttpURLLoad(htmlFile); 4756 registerMockedHttpURLLoad(htmlFile);
4750 4757
4751 DisambiguationPopupTestWebViewClient client; 4758 DisambiguationPopupTestWebViewClient client;
4752 4759
4753 // Make sure we initialize to minimum scale, even if the window size 4760 // Make sure we initialize to minimum scale, even if the window size
4754 // only becomes available after the load begins. 4761 // only becomes available after the load begins.
4755 FrameTestHelpers::WebViewHelper webViewHelper(this); 4762 FrameTestHelpers::WebViewHelper webViewHelper;
4756 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client); 4763 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client);
4757 webViewHelper.resize(WebSize(1000, 1000)); 4764 webViewHelper.resize(WebSize(1000, 1000));
4758 4765
4759 client.resetTriggered(); 4766 client.resetTriggered();
4760 webViewHelper.webView()->handleInputEvent(fatTap(0, 0)); 4767 webViewHelper.webView()->handleInputEvent(fatTap(0, 0));
4761 EXPECT_FALSE(client.triggered()); 4768 EXPECT_FALSE(client.triggered());
4762 4769
4763 client.resetTriggered(); 4770 client.resetTriggered();
4764 webViewHelper.webView()->handleInputEvent(fatTap(200, 115)); 4771 webViewHelper.webView()->handleInputEvent(fatTap(200, 115));
4765 EXPECT_FALSE(client.triggered()); 4772 EXPECT_FALSE(client.triggered());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4798 } 4805 }
4799 4806
4800 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupNoContainer) 4807 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupNoContainer)
4801 { 4808 {
4802 registerMockedHttpURLLoad("disambiguation_popup_no_container.html"); 4809 registerMockedHttpURLLoad("disambiguation_popup_no_container.html");
4803 4810
4804 DisambiguationPopupTestWebViewClient client; 4811 DisambiguationPopupTestWebViewClient client;
4805 4812
4806 // Make sure we initialize to minimum scale, even if the window size 4813 // Make sure we initialize to minimum scale, even if the window size
4807 // only becomes available after the load begins. 4814 // only becomes available after the load begins.
4808 FrameTestHelpers::WebViewHelper webViewHelper(this); 4815 FrameTestHelpers::WebViewHelper webViewHelper;
4809 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_no_contain er.html", true, 0, &client); 4816 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_no_contain er.html", true, 0, &client);
4810 webViewHelper.resize(WebSize(1000, 1000)); 4817 webViewHelper.resize(WebSize(1000, 1000));
4811 4818
4812 client.resetTriggered(); 4819 client.resetTriggered();
4813 webViewHelper.webView()->handleInputEvent(fatTap(50, 50)); 4820 webViewHelper.webView()->handleInputEvent(fatTap(50, 50));
4814 EXPECT_FALSE(client.triggered()); 4821 EXPECT_FALSE(client.triggered());
4815 } 4822 }
4816 4823
4817 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupMobileSite) 4824 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupMobileSite)
4818 { 4825 {
4819 const std::string htmlFile = "disambiguation_popup_mobile_site.html"; 4826 const std::string htmlFile = "disambiguation_popup_mobile_site.html";
4820 registerMockedHttpURLLoad(htmlFile); 4827 registerMockedHttpURLLoad(htmlFile);
4821 4828
4822 DisambiguationPopupTestWebViewClient client; 4829 DisambiguationPopupTestWebViewClient client;
4823 4830
4824 // Make sure we initialize to minimum scale, even if the window size 4831 // Make sure we initialize to minimum scale, even if the window size
4825 // only becomes available after the load begins. 4832 // only becomes available after the load begins.
4826 FrameTestHelpers::WebViewHelper webViewHelper(this); 4833 FrameTestHelpers::WebViewHelper webViewHelper;
4827 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, nullptr, &client , nullptr, enableViewportSettings); 4834 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, nullptr, &client , nullptr, enableViewportSettings);
4828 webViewHelper.resize(WebSize(1000, 1000)); 4835 webViewHelper.resize(WebSize(1000, 1000));
4829 4836
4830 client.resetTriggered(); 4837 client.resetTriggered();
4831 webViewHelper.webView()->handleInputEvent(fatTap(0, 0)); 4838 webViewHelper.webView()->handleInputEvent(fatTap(0, 0));
4832 EXPECT_FALSE(client.triggered()); 4839 EXPECT_FALSE(client.triggered());
4833 4840
4834 client.resetTriggered(); 4841 client.resetTriggered();
4835 webViewHelper.webView()->handleInputEvent(fatTap(200, 115)); 4842 webViewHelper.webView()->handleInputEvent(fatTap(200, 115));
4836 EXPECT_FALSE(client.triggered()); 4843 EXPECT_FALSE(client.triggered());
(...skipping 13 matching lines...) Expand all
4850 4857
4851 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupViewportSite) 4858 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupViewportSite)
4852 { 4859 {
4853 const std::string htmlFile = "disambiguation_popup_viewport_site.html"; 4860 const std::string htmlFile = "disambiguation_popup_viewport_site.html";
4854 registerMockedHttpURLLoad(htmlFile); 4861 registerMockedHttpURLLoad(htmlFile);
4855 4862
4856 DisambiguationPopupTestWebViewClient client; 4863 DisambiguationPopupTestWebViewClient client;
4857 4864
4858 // Make sure we initialize to minimum scale, even if the window size 4865 // Make sure we initialize to minimum scale, even if the window size
4859 // only becomes available after the load begins. 4866 // only becomes available after the load begins.
4860 FrameTestHelpers::WebViewHelper webViewHelper(this); 4867 FrameTestHelpers::WebViewHelper webViewHelper;
4861 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, nullptr, &client , nullptr, enableViewportSettings); 4868 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, nullptr, &client , nullptr, enableViewportSettings);
4862 webViewHelper.resize(WebSize(1000, 1000)); 4869 webViewHelper.resize(WebSize(1000, 1000));
4863 4870
4864 client.resetTriggered(); 4871 client.resetTriggered();
4865 webViewHelper.webView()->handleInputEvent(fatTap(0, 0)); 4872 webViewHelper.webView()->handleInputEvent(fatTap(0, 0));
4866 EXPECT_FALSE(client.triggered()); 4873 EXPECT_FALSE(client.triggered());
4867 4874
4868 client.resetTriggered(); 4875 client.resetTriggered();
4869 webViewHelper.webView()->handleInputEvent(fatTap(200, 115)); 4876 webViewHelper.webView()->handleInputEvent(fatTap(200, 115));
4870 EXPECT_FALSE(client.triggered()); 4877 EXPECT_FALSE(client.triggered());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
4937 const unsigned viewportWidth = 500; 4944 const unsigned viewportWidth = 500;
4938 const unsigned viewportHeight = 1000; 4945 const unsigned viewportHeight = 1000;
4939 const unsigned divHeight = 100; 4946 const unsigned divHeight = 100;
4940 const std::string htmlFile = "disambiguation_popup_blacklist.html"; 4947 const std::string htmlFile = "disambiguation_popup_blacklist.html";
4941 registerMockedHttpURLLoad(htmlFile); 4948 registerMockedHttpURLLoad(htmlFile);
4942 4949
4943 DisambiguationPopupTestWebViewClient client; 4950 DisambiguationPopupTestWebViewClient client;
4944 4951
4945 // Make sure we initialize to minimum scale, even if the window size 4952 // Make sure we initialize to minimum scale, even if the window size
4946 // only becomes available after the load begins. 4953 // only becomes available after the load begins.
4947 FrameTestHelpers::WebViewHelper webViewHelper(this); 4954 FrameTestHelpers::WebViewHelper webViewHelper;
4948 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client); 4955 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client);
4949 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 4956 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
4950 4957
4951 // Click somewhere where the popup shouldn't appear. 4958 // Click somewhere where the popup shouldn't appear.
4952 client.resetTriggered(); 4959 client.resetTriggered();
4953 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, 0)); 4960 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, 0));
4954 EXPECT_FALSE(client.triggered()); 4961 EXPECT_FALSE(client.triggered());
4955 4962
4956 // Click directly in between two container divs with click handlers, with ch ildren that don't handle clicks. 4963 // Click directly in between two container divs with click handlers, with ch ildren that don't handle clicks.
4957 client.resetTriggered(); 4964 client.resetTriggered();
4958 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t)); 4965 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t));
4959 EXPECT_TRUE(client.triggered()); 4966 EXPECT_TRUE(client.triggered());
4960 4967
4961 // The third div container should be blacklisted if you click on the link it contains. 4968 // The third div container should be blacklisted if you click on the link it contains.
4962 client.resetTriggered(); 4969 client.resetTriggered();
4963 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t * 3.25)); 4970 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t * 3.25));
4964 EXPECT_FALSE(client.triggered()); 4971 EXPECT_FALSE(client.triggered());
4965 } 4972 }
4966 4973
4967 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupPageScale) 4974 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupPageScale)
4968 { 4975 {
4969 registerMockedHttpURLLoad("disambiguation_popup_page_scale.html"); 4976 registerMockedHttpURLLoad("disambiguation_popup_page_scale.html");
4970 4977
4971 DisambiguationPopupTestWebViewClient client; 4978 DisambiguationPopupTestWebViewClient client;
4972 4979
4973 // Make sure we initialize to minimum scale, even if the window size 4980 // Make sure we initialize to minimum scale, even if the window size
4974 // only becomes available after the load begins. 4981 // only becomes available after the load begins.
4975 FrameTestHelpers::WebViewHelper webViewHelper(this); 4982 FrameTestHelpers::WebViewHelper webViewHelper;
4976 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_page_scale .html", true, 0, &client); 4983 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_page_scale .html", true, 0, &client);
4977 webViewHelper.resize(WebSize(1000, 1000)); 4984 webViewHelper.resize(WebSize(1000, 1000));
4978 4985
4979 client.resetTriggered(); 4986 client.resetTriggered();
4980 webViewHelper.webView()->handleInputEvent(fatTap(80, 80)); 4987 webViewHelper.webView()->handleInputEvent(fatTap(80, 80));
4981 EXPECT_TRUE(client.triggered()); 4988 EXPECT_TRUE(client.triggered());
4982 4989
4983 client.resetTriggered(); 4990 client.resetTriggered();
4984 webViewHelper.webView()->handleInputEvent(fatTap(230, 190)); 4991 webViewHelper.webView()->handleInputEvent(fatTap(230, 190));
4985 EXPECT_TRUE(client.triggered()); 4992 EXPECT_TRUE(client.triggered());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5017 bool commitCalled() const { return m_commitCalled; } 5024 bool commitCalled() const { return m_commitCalled; }
5018 5025
5019 private: 5026 private:
5020 bool m_commitCalled; 5027 bool m_commitCalled;
5021 }; 5028 };
5022 5029
5023 TEST_P(ParameterizedWebFrameTest, ReplaceNavigationAfterHistoryNavigation) 5030 TEST_P(ParameterizedWebFrameTest, ReplaceNavigationAfterHistoryNavigation)
5024 { 5031 {
5025 TestSubstituteDataWebFrameClient webFrameClient; 5032 TestSubstituteDataWebFrameClient webFrameClient;
5026 5033
5027 FrameTestHelpers::WebViewHelper webViewHelper(this); 5034 FrameTestHelpers::WebViewHelper webViewHelper;
5028 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient); 5035 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient);
5029 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5036 WebFrame* frame = webViewHelper.webView()->mainFrame();
5030 5037
5031 // Load a url as a history navigation that will return an error. TestSubstit uteDataWebFrameClient 5038 // Load a url as a history navigation that will return an error. TestSubstit uteDataWebFrameClient
5032 // will start a SubstituteData load in response to the load failure, which s hould get fully committed. 5039 // will start a SubstituteData load in response to the load failure, which s hould get fully committed.
5033 // Due to https://bugs.webkit.org/show_bug.cgi?id=91685, FrameLoader::didRec eiveData() wasn't getting 5040 // Due to https://bugs.webkit.org/show_bug.cgi?id=91685, FrameLoader::didRec eiveData() wasn't getting
5034 // called in this case, which resulted in the SubstituteData document not ge tting displayed. 5041 // called in this case, which resulted in the SubstituteData document not ge tting displayed.
5035 WebURLError error; 5042 WebURLError error;
5036 error.reason = 1337; 5043 error.reason = 1337;
5037 error.domain = "WebFrameTest"; 5044 error.domain = "WebFrameTest";
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
5074 5081
5075 int m_numBodies; 5082 int m_numBodies;
5076 bool m_didLoad; 5083 bool m_didLoad;
5077 }; 5084 };
5078 5085
5079 TEST_P(ParameterizedWebFrameTest, HTMLDocument) 5086 TEST_P(ParameterizedWebFrameTest, HTMLDocument)
5080 { 5087 {
5081 registerMockedHttpURLLoad("clipped-body.html"); 5088 registerMockedHttpURLLoad("clipped-body.html");
5082 5089
5083 TestWillInsertBodyWebFrameClient webFrameClient; 5090 TestWillInsertBodyWebFrameClient webFrameClient;
5084 FrameTestHelpers::WebViewHelper webViewHelper(this); 5091 FrameTestHelpers::WebViewHelper webViewHelper;
5085 webViewHelper.initializeAndLoad(m_baseURL + "clipped-body.html", false, &web FrameClient); 5092 webViewHelper.initializeAndLoad(m_baseURL + "clipped-body.html", false, &web FrameClient);
5086 5093
5087 EXPECT_TRUE(webFrameClient.m_didLoad); 5094 EXPECT_TRUE(webFrameClient.m_didLoad);
5088 EXPECT_EQ(1, webFrameClient.m_numBodies); 5095 EXPECT_EQ(1, webFrameClient.m_numBodies);
5089 } 5096 }
5090 5097
5091 TEST_P(ParameterizedWebFrameTest, EmptyDocument) 5098 TEST_P(ParameterizedWebFrameTest, EmptyDocument)
5092 { 5099 {
5093 registerMockedHttpURLLoad("frameserializer/svg/green_rectangle.svg"); 5100 registerMockedHttpURLLoad("frameserializer/svg/green_rectangle.svg");
5094 5101
5095 TestWillInsertBodyWebFrameClient webFrameClient; 5102 TestWillInsertBodyWebFrameClient webFrameClient;
5096 FrameTestHelpers::WebViewHelper webViewHelper(this); 5103 FrameTestHelpers::WebViewHelper webViewHelper;
5097 webViewHelper.initialize(false, &webFrameClient); 5104 webViewHelper.initialize(false, &webFrameClient);
5098 5105
5099 EXPECT_FALSE(webFrameClient.m_didLoad); 5106 EXPECT_FALSE(webFrameClient.m_didLoad);
5100 EXPECT_EQ(1, webFrameClient.m_numBodies); // The empty document that a new f rame starts with triggers this. 5107 EXPECT_EQ(1, webFrameClient.m_numBodies); // The empty document that a new f rame starts with triggers this.
5101 } 5108 }
5102 5109
5103 TEST_P(ParameterizedWebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSele ction) 5110 TEST_P(ParameterizedWebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSele ction)
5104 { 5111 {
5105 FrameTestHelpers::WebViewHelper webViewHelper(this); 5112 FrameTestHelpers::WebViewHelper webViewHelper;
5106 webViewHelper.initializeAndLoad("about:blank", true); 5113 webViewHelper.initializeAndLoad("about:blank", true);
5107 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5114 WebFrame* frame = webViewHelper.webView()->mainFrame();
5108 5115
5109 // This test passes if this doesn't crash. 5116 // This test passes if this doesn't crash.
5110 frame->toWebLocalFrame()->moveCaretSelection(WebPoint(0, 0)); 5117 frame->toWebLocalFrame()->moveCaretSelection(WebPoint(0, 0));
5111 } 5118 }
5112 5119
5113 class SpellCheckClient : public WebSpellCheckClient { 5120 class SpellCheckClient : public WebSpellCheckClient {
5114 public: 5121 public:
5115 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { } 5122 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { }
5116 virtual ~SpellCheckClient() { } 5123 virtual ~SpellCheckClient() { }
5117 void requestCheckingOfText(const WebString&, const WebVector<uint32_t>&, con st WebVector<unsigned>&, WebTextCheckingCompletion* completion) override 5124 void requestCheckingOfText(const WebString&, const WebVector<uint32_t>&, con st WebVector<unsigned>&, WebTextCheckingCompletion* completion) override
5118 { 5125 {
5119 ++m_numberOfTimesChecked; 5126 ++m_numberOfTimesChecked;
5120 Vector<WebTextCheckingResult> results; 5127 Vector<WebTextCheckingResult> results;
5121 const int misspellingStartOffset = 1; 5128 const int misspellingStartOffset = 1;
5122 const int misspellingLength = 8; 5129 const int misspellingLength = 8;
5123 results.append(WebTextCheckingResult(WebTextDecorationTypeSpelling, miss pellingStartOffset, misspellingLength, WebString(), m_hash)); 5130 results.append(WebTextCheckingResult(WebTextDecorationTypeSpelling, miss pellingStartOffset, misspellingLength, WebString(), m_hash));
5124 completion->didFinishCheckingText(results); 5131 completion->didFinishCheckingText(results);
5125 } 5132 }
5126 int numberOfTimesChecked() const { return m_numberOfTimesChecked; } 5133 int numberOfTimesChecked() const { return m_numberOfTimesChecked; }
5127 private: 5134 private:
5128 int m_numberOfTimesChecked; 5135 int m_numberOfTimesChecked;
5129 uint32_t m_hash; 5136 uint32_t m_hash;
5130 }; 5137 };
5131 5138
5132 TEST_P(ParameterizedWebFrameTest, ReplaceMisspelledRange) 5139 TEST_P(ParameterizedWebFrameTest, ReplaceMisspelledRange)
5133 { 5140 {
5134 registerMockedHttpURLLoad("spell.html"); 5141 registerMockedHttpURLLoad("spell.html");
5135 FrameTestHelpers::WebViewHelper webViewHelper(this); 5142 FrameTestHelpers::WebViewHelper webViewHelper;
5136 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5143 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5137 SpellCheckClient spellcheck; 5144 SpellCheckClient spellcheck;
5138 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5145 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5139 5146
5140 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5147 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5141 Document* document = frame->frame()->document(); 5148 Document* document = frame->frame()->document();
5142 Element* element = document->getElementById("data"); 5149 Element* element = document->getElementById("data");
5143 5150
5144 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5151 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5145 5152
(...skipping 10 matching lines...) Expand all
5156 EXPECT_EQ(1, spellcheck.numberOfTimesChecked()); 5163 EXPECT_EQ(1, spellcheck.numberOfTimesChecked());
5157 EXPECT_EQ(1U, document->markers().markersInRange(selectionRange, DocumentMar ker::Spelling).size()); 5164 EXPECT_EQ(1U, document->markers().markersInRange(selectionRange, DocumentMar ker::Spelling).size());
5158 5165
5159 frame->replaceMisspelledRange("welcome"); 5166 frame->replaceMisspelledRange("welcome");
5160 EXPECT_EQ("_welcome_.", WebFrameContentDumper::dumpWebViewAsText(webViewHelp er.webView(), std::numeric_limits<size_t>::max()).utf8()); 5167 EXPECT_EQ("_welcome_.", WebFrameContentDumper::dumpWebViewAsText(webViewHelp er.webView(), std::numeric_limits<size_t>::max()).utf8());
5161 } 5168 }
5162 5169
5163 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkers) 5170 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkers)
5164 { 5171 {
5165 registerMockedHttpURLLoad("spell.html"); 5172 registerMockedHttpURLLoad("spell.html");
5166 FrameTestHelpers::WebViewHelper webViewHelper(this); 5173 FrameTestHelpers::WebViewHelper webViewHelper;
5167 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5174 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5168 SpellCheckClient spellcheck; 5175 SpellCheckClient spellcheck;
5169 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5176 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5170 5177
5171 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5178 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5172 Document* document = frame->frame()->document(); 5179 Document* document = frame->frame()->document();
5173 Element* element = document->getElementById("data"); 5180 Element* element = document->getElementById("data");
5174 5181
5175 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5182 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5176 5183
5177 element->focus(); 5184 element->focus();
5178 NonThrowableExceptionState exceptionState; 5185 NonThrowableExceptionState exceptionState;
5179 document->execCommand("InsertText", false, "_wellcome_.", exceptionState); 5186 document->execCommand("InsertText", false, "_wellcome_.", exceptionState);
5180 EXPECT_FALSE(exceptionState.hadException()); 5187 EXPECT_FALSE(exceptionState.hadException());
5181 5188
5182 frame->removeSpellingMarkers(); 5189 frame->removeSpellingMarkers();
5183 5190
5184 const int allTextBeginOffset = 0; 5191 const int allTextBeginOffset = 0;
5185 const int allTextLength = 11; 5192 const int allTextLength = 11;
5186 frame->selectRange(WebRange(allTextBeginOffset, allTextLength)); 5193 frame->selectRange(WebRange(allTextBeginOffset, allTextLength));
5187 EphemeralRange selectionRange = frame->frame()->selection().selection().toNo rmalizedEphemeralRange(); 5194 EphemeralRange selectionRange = frame->frame()->selection().selection().toNo rmalizedEphemeralRange();
5188 5195
5189 EXPECT_EQ(0U, document->markers().markersInRange(selectionRange, DocumentMar ker::Spelling).size()); 5196 EXPECT_EQ(0U, document->markers().markersInRange(selectionRange, DocumentMar ker::Spelling).size());
5190 } 5197 }
5191 5198
5192 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkersUnderWords) 5199 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkersUnderWords)
5193 { 5200 {
5194 registerMockedHttpURLLoad("spell.html"); 5201 registerMockedHttpURLLoad("spell.html");
5195 FrameTestHelpers::WebViewHelper webViewHelper(this); 5202 FrameTestHelpers::WebViewHelper webViewHelper;
5196 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5203 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5197 SpellCheckClient spellcheck; 5204 SpellCheckClient spellcheck;
5198 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5205 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5199 5206
5200 LocalFrame* frame = webViewHelper.webView()->mainFrameImpl()->frame(); 5207 LocalFrame* frame = webViewHelper.webView()->mainFrameImpl()->frame();
5201 Document* document = frame->document(); 5208 Document* document = frame->document();
5202 Element* element = document->getElementById("data"); 5209 Element* element = document->getElementById("data");
5203 5210
5204 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5211 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5205 5212
(...skipping 11 matching lines...) Expand all
5217 frame->removeSpellingMarkersUnderWords(words); 5224 frame->removeSpellingMarkersUnderWords(words);
5218 5225
5219 WebVector<uint32_t> documentMarkers2; 5226 WebVector<uint32_t> documentMarkers2;
5220 webViewHelper.webView()->spellingMarkers(&documentMarkers2); 5227 webViewHelper.webView()->spellingMarkers(&documentMarkers2);
5221 EXPECT_EQ(0U, documentMarkers2.size()); 5228 EXPECT_EQ(0U, documentMarkers2.size());
5222 } 5229 }
5223 5230
5224 TEST_P(ParameterizedWebFrameTest, MarkerHashIdentifiers) 5231 TEST_P(ParameterizedWebFrameTest, MarkerHashIdentifiers)
5225 { 5232 {
5226 registerMockedHttpURLLoad("spell.html"); 5233 registerMockedHttpURLLoad("spell.html");
5227 FrameTestHelpers::WebViewHelper webViewHelper(this); 5234 FrameTestHelpers::WebViewHelper webViewHelper;
5228 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5235 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5229 5236
5230 static const uint32_t kHash = 42; 5237 static const uint32_t kHash = 42;
5231 SpellCheckClient spellcheck(kHash); 5238 SpellCheckClient spellcheck(kHash);
5232 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5239 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5233 5240
5234 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5241 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5235 Document* document = frame->frame()->document(); 5242 Document* document = frame->frame()->document();
5236 Element* element = document->getElementById("data"); 5243 Element* element = document->getElementById("data");
5237 5244
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
5301 m_completion->didFinishCheckingText(results); 5308 m_completion->didFinishCheckingText(results);
5302 m_completion = 0; 5309 m_completion = 0;
5303 } 5310 }
5304 5311
5305 WebTextCheckingCompletion* m_completion; 5312 WebTextCheckingCompletion* m_completion;
5306 }; 5313 };
5307 5314
5308 TEST_P(ParameterizedWebFrameTest, SlowSpellcheckMarkerPosition) 5315 TEST_P(ParameterizedWebFrameTest, SlowSpellcheckMarkerPosition)
5309 { 5316 {
5310 registerMockedHttpURLLoad("spell.html"); 5317 registerMockedHttpURLLoad("spell.html");
5311 FrameTestHelpers::WebViewHelper webViewHelper(this); 5318 FrameTestHelpers::WebViewHelper webViewHelper;
5312 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5319 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5313 5320
5314 StubbornSpellCheckClient spellcheck; 5321 StubbornSpellCheckClient spellcheck;
5315 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5322 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5316 5323
5317 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5324 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5318 Document* document = frame->frame()->document(); 5325 Document* document = frame->frame()->document();
5319 Element* element = document->getElementById("data"); 5326 Element* element = document->getElementById("data");
5320 5327
5321 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5328 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
(...skipping 10 matching lines...) Expand all
5332 WebVector<uint32_t> documentMarkers; 5339 WebVector<uint32_t> documentMarkers;
5333 webViewHelper.webView()->spellingMarkers(&documentMarkers); 5340 webViewHelper.webView()->spellingMarkers(&documentMarkers);
5334 EXPECT_EQ(0U, documentMarkers.size()); 5341 EXPECT_EQ(0U, documentMarkers.size());
5335 } 5342 }
5336 5343
5337 // This test verifies that cancelling spelling request does not cause a 5344 // This test verifies that cancelling spelling request does not cause a
5338 // write-after-free when there's no spellcheck client set. 5345 // write-after-free when there's no spellcheck client set.
5339 TEST_P(ParameterizedWebFrameTest, CancelSpellingRequestCrash) 5346 TEST_P(ParameterizedWebFrameTest, CancelSpellingRequestCrash)
5340 { 5347 {
5341 registerMockedHttpURLLoad("spell.html"); 5348 registerMockedHttpURLLoad("spell.html");
5342 FrameTestHelpers::WebViewHelper webViewHelper(this); 5349 FrameTestHelpers::WebViewHelper webViewHelper;
5343 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5350 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5344 webViewHelper.webView()->setSpellCheckClient(0); 5351 webViewHelper.webView()->setSpellCheckClient(0);
5345 5352
5346 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5353 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5347 Document* document = frame->frame()->document(); 5354 Document* document = frame->frame()->document();
5348 Element* element = document->getElementById("data"); 5355 Element* element = document->getElementById("data");
5349 5356
5350 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5357 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5351 5358
5352 element->focus(); 5359 element->focus();
5353 frame->frame()->editor().replaceSelectionWithText("A", false, false); 5360 frame->frame()->editor().replaceSelectionWithText("A", false, false);
5354 frame->frame()->spellChecker().cancelCheck(); 5361 frame->frame()->spellChecker().cancelCheck();
5355 } 5362 }
5356 5363
5357 TEST_P(ParameterizedWebFrameTest, SpellcheckResultErasesMarkers) 5364 TEST_P(ParameterizedWebFrameTest, SpellcheckResultErasesMarkers)
5358 { 5365 {
5359 registerMockedHttpURLLoad("spell.html"); 5366 registerMockedHttpURLLoad("spell.html");
5360 FrameTestHelpers::WebViewHelper webViewHelper(this); 5367 FrameTestHelpers::WebViewHelper webViewHelper;
5361 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5368 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5362 5369
5363 StubbornSpellCheckClient spellcheck; 5370 StubbornSpellCheckClient spellcheck;
5364 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5371 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5365 5372
5366 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5373 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5367 Document* document = frame->frame()->document(); 5374 Document* document = frame->frame()->document();
5368 Element* element = document->getElementById("data"); 5375 Element* element = document->getElementById("data");
5369 5376
5370 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5377 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
(...skipping 11 matching lines...) Expand all
5382 document->markers().addMarker(range.startPosition(), range.endPosition(), Do cumentMarker::InvisibleSpellcheck); 5389 document->markers().addMarker(range.startPosition(), range.endPosition(), Do cumentMarker::InvisibleSpellcheck);
5383 EXPECT_EQ(3U, document->markers().markers().size()); 5390 EXPECT_EQ(3U, document->markers().markers().size());
5384 5391
5385 spellcheck.kickNoResults(); 5392 spellcheck.kickNoResults();
5386 EXPECT_EQ(0U, document->markers().markers().size()); 5393 EXPECT_EQ(0U, document->markers().markers().size());
5387 } 5394 }
5388 5395
5389 TEST_P(ParameterizedWebFrameTest, SpellcheckResultsSavedInDocument) 5396 TEST_P(ParameterizedWebFrameTest, SpellcheckResultsSavedInDocument)
5390 { 5397 {
5391 registerMockedHttpURLLoad("spell.html"); 5398 registerMockedHttpURLLoad("spell.html");
5392 FrameTestHelpers::WebViewHelper webViewHelper(this); 5399 FrameTestHelpers::WebViewHelper webViewHelper;
5393 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5400 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5394 5401
5395 StubbornSpellCheckClient spellcheck; 5402 StubbornSpellCheckClient spellcheck;
5396 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5403 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5397 5404
5398 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 5405 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
5399 Document* document = frame->frame()->document(); 5406 Document* document = frame->frame()->document();
5400 Element* element = document->getElementById("data"); 5407 Element* element = document->getElementById("data");
5401 5408
5402 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5409 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
5443 bool m_didAccessInitialDocument; 5450 bool m_didAccessInitialDocument;
5444 }; 5451 };
5445 5452
5446 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBody) 5453 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBody)
5447 { 5454 {
5448 // FIXME: Why is this local webViewClient needed instead of the default 5455 // FIXME: Why is this local webViewClient needed instead of the default
5449 // WebViewHelper one? With out it there's some mysterious crash in the 5456 // WebViewHelper one? With out it there's some mysterious crash in the
5450 // WebViewHelper destructor. 5457 // WebViewHelper destructor.
5451 FrameTestHelpers::TestWebViewClient webViewClient; 5458 FrameTestHelpers::TestWebViewClient webViewClient;
5452 TestAccessInitialDocumentWebFrameClient webFrameClient; 5459 TestAccessInitialDocumentWebFrameClient webFrameClient;
5453 FrameTestHelpers::WebViewHelper webViewHelper(this); 5460 FrameTestHelpers::WebViewHelper webViewHelper;
5454 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5461 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5455 runPendingTasks(); 5462 runPendingTasks();
5456 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5463 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5457 5464
5458 // Create another window that will try to access it. 5465 // Create another window that will try to access it.
5459 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5466 FrameTestHelpers::WebViewHelper newWebViewHelper;
5460 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true); 5467 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5461 runPendingTasks(); 5468 runPendingTasks();
5462 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5469 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5463 5470
5464 // Access the initial document by modifying the body. 5471 // Access the initial document by modifying the body.
5465 newView->mainFrame()->executeScript( 5472 newView->mainFrame()->executeScript(
5466 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 5473 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
5467 runPendingTasks(); 5474 runPendingTasks();
5468 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5475 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5469 5476
5470 // Access the initial document again, to ensure we don't notify twice. 5477 // Access the initial document again, to ensure we don't notify twice.
5471 newView->mainFrame()->executeScript( 5478 newView->mainFrame()->executeScript(
5472 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 5479 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
5473 runPendingTasks(); 5480 runPendingTasks();
5474 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5481 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5475 } 5482 }
5476 5483
5477 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentNavigator) 5484 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentNavigator)
5478 { 5485 {
5479 // FIXME: Why is this local webViewClient needed instead of the default 5486 // FIXME: Why is this local webViewClient needed instead of the default
5480 // WebViewHelper one? With out it there's some mysterious crash in the 5487 // WebViewHelper one? With out it there's some mysterious crash in the
5481 // WebViewHelper destructor. 5488 // WebViewHelper destructor.
5482 FrameTestHelpers::TestWebViewClient webViewClient; 5489 FrameTestHelpers::TestWebViewClient webViewClient;
5483 TestAccessInitialDocumentWebFrameClient webFrameClient; 5490 TestAccessInitialDocumentWebFrameClient webFrameClient;
5484 FrameTestHelpers::WebViewHelper webViewHelper(this); 5491 FrameTestHelpers::WebViewHelper webViewHelper;
5485 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5492 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5486 runPendingTasks(); 5493 runPendingTasks();
5487 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5494 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5488 5495
5489 // Create another window that will try to access it. 5496 // Create another window that will try to access it.
5490 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5497 FrameTestHelpers::WebViewHelper newWebViewHelper;
5491 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true); 5498 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5492 runPendingTasks(); 5499 runPendingTasks();
5493 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5500 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5494 5501
5495 // Access the initial document to get to the navigator object. 5502 // Access the initial document to get to the navigator object.
5496 newView->mainFrame()->executeScript( 5503 newView->mainFrame()->executeScript(
5497 WebScriptSource("console.log(window.opener.navigator);")); 5504 WebScriptSource("console.log(window.opener.navigator);"));
5498 runPendingTasks(); 5505 runPendingTasks();
5499 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5506 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5500 } 5507 }
5501 5508
5502 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentViaJavascriptUrl) 5509 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentViaJavascriptUrl)
5503 { 5510 {
5504 TestAccessInitialDocumentWebFrameClient webFrameClient; 5511 TestAccessInitialDocumentWebFrameClient webFrameClient;
5505 FrameTestHelpers::WebViewHelper webViewHelper(this); 5512 FrameTestHelpers::WebViewHelper webViewHelper;
5506 webViewHelper.initialize(true, &webFrameClient); 5513 webViewHelper.initialize(true, &webFrameClient);
5507 runPendingTasks(); 5514 runPendingTasks();
5508 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5515 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5509 5516
5510 // Access the initial document from a javascript: URL. 5517 // Access the initial document from a javascript: URL.
5511 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Modified'))"); 5518 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Modified'))");
5512 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5519 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5513 } 5520 }
5514 5521
5515 // Fails on the WebKit XP (deps) bot. http://crbug.com/312192 5522 // Fails on the WebKit XP (deps) bot. http://crbug.com/312192
5516 #if OS(WIN) 5523 #if OS(WIN)
5517 TEST_P(ParameterizedWebFrameTest, DISABLED_DidAccessInitialDocumentBodyBeforeMod alDialog) 5524 TEST_P(ParameterizedWebFrameTest, DISABLED_DidAccessInitialDocumentBodyBeforeMod alDialog)
5518 #else 5525 #else
5519 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog) 5526 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog)
5520 #endif 5527 #endif
5521 { 5528 {
5522 // FIXME: Why is this local webViewClient needed instead of the default 5529 // FIXME: Why is this local webViewClient needed instead of the default
5523 // WebViewHelper one? With out it there's some mysterious crash in the 5530 // WebViewHelper one? With out it there's some mysterious crash in the
5524 // WebViewHelper destructor. 5531 // WebViewHelper destructor.
5525 FrameTestHelpers::TestWebViewClient webViewClient; 5532 FrameTestHelpers::TestWebViewClient webViewClient;
5526 TestAccessInitialDocumentWebFrameClient webFrameClient; 5533 TestAccessInitialDocumentWebFrameClient webFrameClient;
5527 FrameTestHelpers::WebViewHelper webViewHelper(this); 5534 FrameTestHelpers::WebViewHelper webViewHelper;
5528 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5535 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5529 runPendingTasks(); 5536 runPendingTasks();
5530 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5537 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5531 5538
5532 // Create another window that will try to access it. 5539 // Create another window that will try to access it.
5533 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5540 FrameTestHelpers::WebViewHelper newWebViewHelper;
5534 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true); 5541 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5535 runPendingTasks(); 5542 runPendingTasks();
5536 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5543 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5537 5544
5538 // Access the initial document by modifying the body. 5545 // Access the initial document by modifying the body.
5539 newView->mainFrame()->executeScript( 5546 newView->mainFrame()->executeScript(
5540 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 5547 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
5541 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5548 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5542 5549
5543 // Run a modal dialog, which used to run a nested message loop and require 5550 // Run a modal dialog, which used to run a nested message loop and require
(...skipping 12 matching lines...) Expand all
5556 TEST_P(ParameterizedWebFrameTest, DISABLED_DidWriteToInitialDocumentBeforeModalD ialog) 5563 TEST_P(ParameterizedWebFrameTest, DISABLED_DidWriteToInitialDocumentBeforeModalD ialog)
5557 #else 5564 #else
5558 TEST_P(ParameterizedWebFrameTest, DidWriteToInitialDocumentBeforeModalDialog) 5565 TEST_P(ParameterizedWebFrameTest, DidWriteToInitialDocumentBeforeModalDialog)
5559 #endif 5566 #endif
5560 { 5567 {
5561 // FIXME: Why is this local webViewClient needed instead of the default 5568 // FIXME: Why is this local webViewClient needed instead of the default
5562 // WebViewHelper one? With out it there's some mysterious crash in the 5569 // WebViewHelper one? With out it there's some mysterious crash in the
5563 // WebViewHelper destructor. 5570 // WebViewHelper destructor.
5564 FrameTestHelpers::TestWebViewClient webViewClient; 5571 FrameTestHelpers::TestWebViewClient webViewClient;
5565 TestAccessInitialDocumentWebFrameClient webFrameClient; 5572 TestAccessInitialDocumentWebFrameClient webFrameClient;
5566 FrameTestHelpers::WebViewHelper webViewHelper(this); 5573 FrameTestHelpers::WebViewHelper webViewHelper;
5567 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5574 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5568 runPendingTasks(); 5575 runPendingTasks();
5569 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5576 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5570 5577
5571 // Create another window that will try to access it. 5578 // Create another window that will try to access it.
5572 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5579 FrameTestHelpers::WebViewHelper newWebViewHelper;
5573 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true); 5580 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5574 runPendingTasks(); 5581 runPendingTasks();
5575 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5582 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5576 5583
5577 // Access the initial document with document.write, which moves us past the 5584 // Access the initial document with document.write, which moves us past the
5578 // initial empty document state of the state machine. 5585 // initial empty document state of the state machine.
5579 newView->mainFrame()->executeScript( 5586 newView->mainFrame()->executeScript(
5580 WebScriptSource("window.opener.document.write('Modified'); window.opener .document.close();")); 5587 WebScriptSource("window.opener.document.write('Modified'); window.opener .document.close();"));
5581 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5588 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5582 5589
(...skipping 27 matching lines...) Expand all
5610 // FrameView can be scrolled in FrameView::setFixedVisibleContentRect 5617 // FrameView can be scrolled in FrameView::setFixedVisibleContentRect
5611 // which is called from LocalFrame::createView (before the frame is asso ciated 5618 // which is called from LocalFrame::createView (before the frame is asso ciated
5612 // with the the view). 5619 // with the the view).
5613 if (view) 5620 if (view)
5614 m_didScrollFrame = true; 5621 m_didScrollFrame = true;
5615 } 5622 }
5616 private: 5623 private:
5617 bool m_didScrollFrame; 5624 bool m_didScrollFrame;
5618 }; 5625 };
5619 5626
5620 TEST_P(ParameterizedWebFrameTest, CompositorScrollIsUserScrollLongPage) 5627 TEST_F(WebFrameTest, CompositorScrollIsUserScrollLongPage)
5621 { 5628 {
5622 registerMockedHttpURLLoad("long_scroll.html"); 5629 registerMockedHttpURLLoad("long_scroll.html");
5623 TestScrolledFrameClient client; 5630 TestScrolledFrameClient client;
5624 5631
5625 // Make sure we initialize to minimum scale, even if the window size 5632 // Make sure we initialize to minimum scale, even if the window size
5626 // only becomes available after the load begins. 5633 // only becomes available after the load begins.
5627 FrameTestHelpers::WebViewHelper webViewHelper; 5634 FrameTestHelpers::WebViewHelper webViewHelper;
5628 webViewHelper.initializeAndLoad(m_baseURL + "long_scroll.html", true, &clien t); 5635 webViewHelper.initializeAndLoad(m_baseURL + "long_scroll.html", true, &clien t);
5629 webViewHelper.resize(WebSize(1000, 1000)); 5636 webViewHelper.resize(WebSize(1000, 1000));
5630 5637
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
5695 WebURLResponse redirectResponse; 5702 WebURLResponse redirectResponse;
5696 redirectResponse.setMIMEType("text/html"); 5703 redirectResponse.setMIMEType("text/html");
5697 redirectResponse.setHTTPStatusCode(302); 5704 redirectResponse.setHTTPStatusCode(302);
5698 redirectResponse.setHTTPHeaderField("Location", redirect); 5705 redirectResponse.setHTTPHeaderField("Location", redirect);
5699 Platform::current()->getURLLoaderMockFactory()->registerURL(testURL, redirec tResponse, filePath); 5706 Platform::current()->getURLLoaderMockFactory()->registerURL(testURL, redirec tResponse, filePath);
5700 5707
5701 WebURLResponse finalResponse; 5708 WebURLResponse finalResponse;
5702 finalResponse.setMIMEType("text/html"); 5709 finalResponse.setMIMEType("text/html");
5703 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, fin alResponse, filePath); 5710 Platform::current()->getURLLoaderMockFactory()->registerURL(redirectURL, fin alResponse, filePath);
5704 5711
5705 FrameTestHelpers::WebViewHelper webViewHelper(this); 5712 FrameTestHelpers::WebViewHelper webViewHelper;
5706 webViewHelper.initializeAndLoad(m_baseURL + "first_party_redirect.html", tru e); 5713 webViewHelper.initializeAndLoad(m_baseURL + "first_party_redirect.html", tru e);
5707 EXPECT_TRUE(webViewHelper.webView()->mainFrame()->document().firstPartyForCo okies() == redirectURL); 5714 EXPECT_TRUE(webViewHelper.webView()->mainFrame()->document().firstPartyForCo okies() == redirectURL);
5708 } 5715 }
5709 5716
5710 class TestNavigationPolicyWebFrameClient : public FrameTestHelpers::TestWebFrame Client { 5717 class TestNavigationPolicyWebFrameClient : public FrameTestHelpers::TestWebFrame Client {
5711 public: 5718 public:
5712 5719
5713 void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, WebHistory CommitType, bool) override 5720 void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, WebHistory CommitType, bool) override
5714 { 5721 {
5715 EXPECT_TRUE(false); 5722 EXPECT_TRUE(false);
5716 } 5723 }
5717 }; 5724 };
5718 5725
5719 TEST_P(ParameterizedWebFrameTest, SimulateFragmentAnchorMiddleClick) 5726 TEST_P(ParameterizedWebFrameTest, SimulateFragmentAnchorMiddleClick)
5720 { 5727 {
5721 registerMockedHttpURLLoad("fragment_middle_click.html"); 5728 registerMockedHttpURLLoad("fragment_middle_click.html");
5722 TestNavigationPolicyWebFrameClient client; 5729 TestNavigationPolicyWebFrameClient client;
5723 FrameTestHelpers::WebViewHelper webViewHelper(this); 5730 FrameTestHelpers::WebViewHelper webViewHelper;
5724 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue, &client); 5731 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue, &client);
5725 5732
5726 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document(); 5733 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document();
5727 KURL destination = document->url(); 5734 KURL destination = document->url();
5728 destination.setFragmentIdentifier("test"); 5735 destination.setFragmentIdentifier("test");
5729 5736
5730 Event* event = MouseEvent::create(EventTypeNames::click, false, false, 5737 Event* event = MouseEvent::create(EventTypeNames::click, false, false,
5731 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, PlatformEvent::NoModifiers, 1, 0, nullptr, 0, 5738 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, PlatformEvent::NoModifiers, 1, 0, nullptr, 0,
5732 PlatformMouseEvent::RealOrIndistinguishable, String()); 5739 PlatformMouseEvent::RealOrIndistinguishable, String());
5733 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); 5740 FrameLoadRequest frameRequest(document, ResourceRequest(destination));
(...skipping 29 matching lines...) Expand all
5763 private: 5770 private:
5764 int m_decidePolicyCallCount; 5771 int m_decidePolicyCallCount;
5765 }; 5772 };
5766 5773
5767 TEST_P(ParameterizedWebFrameTest, ModifiedClickNewWindow) 5774 TEST_P(ParameterizedWebFrameTest, ModifiedClickNewWindow)
5768 { 5775 {
5769 registerMockedHttpURLLoad("ctrl_click.html"); 5776 registerMockedHttpURLLoad("ctrl_click.html");
5770 registerMockedHttpURLLoad("hello_world.html"); 5777 registerMockedHttpURLLoad("hello_world.html");
5771 TestNewWindowWebViewClient webViewClient; 5778 TestNewWindowWebViewClient webViewClient;
5772 TestNewWindowWebFrameClient webFrameClient; 5779 TestNewWindowWebFrameClient webFrameClient;
5773 FrameTestHelpers::WebViewHelper webViewHelper(this); 5780 FrameTestHelpers::WebViewHelper webViewHelper;
5774 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, &webFra meClient, &webViewClient); 5781 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, &webFra meClient, &webViewClient);
5775 5782
5776 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document(); 5783 Document* document = toLocalFrame(webViewHelper.webView()->page()->mainFrame ())->document();
5777 KURL destination = toKURL(m_baseURL + "hello_world.html"); 5784 KURL destination = toKURL(m_baseURL + "hello_world.html");
5778 5785
5779 // ctrl+click event 5786 // ctrl+click event
5780 Event* event = MouseEvent::create(EventTypeNames::click, false, false, 5787 Event* event = MouseEvent::create(EventTypeNames::click, false, false,
5781 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, PlatformEvent::CtrlKey, 0, 0 , nullptr, 0, 5788 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, PlatformEvent::CtrlKey, 0, 0 , nullptr, 0,
5782 PlatformMouseEvent::RealOrIndistinguishable, String()); 5789 PlatformMouseEvent::RealOrIndistinguishable, String());
5783 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); 5790 FrameLoadRequest frameRequest(document, ResourceRequest(destination));
5784 frameRequest.setTriggeringEvent(event); 5791 frameRequest.setTriggeringEvent(event);
5785 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); 5792 UserGestureIndicator gesture(DefinitelyProcessingUserGesture);
5786 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->loader().load(fr ameRequest); 5793 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->loader().load(fr ameRequest);
5787 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame()); 5794 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame());
5788 5795
5789 // decidePolicyForNavigation should be called both for the original request and the ctrl+click. 5796 // decidePolicyForNavigation should be called both for the original request and the ctrl+click.
5790 EXPECT_EQ(2, webFrameClient.decidePolicyCallCount()); 5797 EXPECT_EQ(2, webFrameClient.decidePolicyCallCount());
5791 } 5798 }
5792 5799
5793 TEST_P(ParameterizedWebFrameTest, BackToReload) 5800 TEST_P(ParameterizedWebFrameTest, BackToReload)
5794 { 5801 {
5795 registerMockedHttpURLLoad("fragment_middle_click.html"); 5802 registerMockedHttpURLLoad("fragment_middle_click.html");
5796 FrameTestHelpers::WebViewHelper webViewHelper(this); 5803 FrameTestHelpers::WebViewHelper webViewHelper;
5797 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue); 5804 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue);
5798 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5805 WebFrame* frame = webViewHelper.webView()->mainFrame();
5799 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader(); 5806 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader();
5800 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem(); 5807 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem();
5801 EXPECT_TRUE(firstItem); 5808 EXPECT_TRUE(firstItem);
5802 5809
5803 registerMockedHttpURLLoad("white-1x1.png"); 5810 registerMockedHttpURLLoad("white-1x1.png");
5804 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 5811 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
5805 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 5812 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem());
5806 5813
5807 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()), We bHistoryDifferentDocumentLoad, WebCachePolicy::UseProtocolCachePolicy); 5814 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()), We bHistoryDifferentDocumentLoad, WebCachePolicy::UseProtocolCachePolicy);
5808 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem()); 5815 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem());
5809 5816
5810 FrameTestHelpers::reloadFrame(frame); 5817 FrameTestHelpers::reloadFrame(frame);
5811 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, frame->dataSource()->request( ).getCachePolicy()); 5818 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, frame->dataSource()->request( ).getCachePolicy());
5812 } 5819 }
5813 5820
5814 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload) 5821 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload)
5815 { 5822 {
5816 registerMockedHttpURLLoad("page_with_blank_iframe.html"); 5823 registerMockedHttpURLLoad("page_with_blank_iframe.html");
5817 FrameTestHelpers::WebViewHelper webViewHelper(this); 5824 FrameTestHelpers::WebViewHelper webViewHelper;
5818 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html", t rue); 5825 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html", t rue);
5819 WebLocalFrame* mainFrame = webViewHelper.webView()->mainFrameImpl(); 5826 WebLocalFrame* mainFrame = webViewHelper.webView()->mainFrameImpl();
5820 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader(); 5827 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader();
5821 WebFrame* childFrame = mainFrame->firstChild(); 5828 WebFrame* childFrame = mainFrame->firstChild();
5822 ASSERT_TRUE(childFrame); 5829 ASSERT_TRUE(childFrame);
5823 5830
5824 // Start a history navigation, then have a different frame commit a navigati on. 5831 // Start a history navigation, then have a different frame commit a navigati on.
5825 // In this case, reload an about:blank frame, which will commit synchronousl y. 5832 // In this case, reload an about:blank frame, which will commit synchronousl y.
5826 // After the history navigation completes, both the appropriate document url and 5833 // After the history navigation completes, both the appropriate document url and
5827 // the current history item should reflect the history navigation. 5834 // the current history item should reflect the history navigation.
5828 registerMockedHttpURLLoad("white-1x1.png"); 5835 registerMockedHttpURLLoad("white-1x1.png");
5829 WebHistoryItem item; 5836 WebHistoryItem item;
5830 item.initialize(); 5837 item.initialize();
5831 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png")); 5838 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png"));
5832 item.setURLString(historyURL.string()); 5839 item.setURLString(historyURL.string());
5833 WebURLRequest request = mainFrame->requestFromHistoryItem(item, WebCachePoli cy::UseProtocolCachePolicy); 5840 WebURLRequest request = mainFrame->requestFromHistoryItem(item, WebCachePoli cy::UseProtocolCachePolicy);
5834 mainFrame->load(request, WebFrameLoadType::BackForward, item); 5841 mainFrame->load(request, WebFrameLoadType::BackForward, item);
5835 5842
5836 FrameTestHelpers::reloadFrame(childFrame); 5843 FrameTestHelpers::reloadFrame(childFrame);
5837 EXPECT_EQ(item.urlString(), mainFrame->document().url().string()); 5844 EXPECT_EQ(item.urlString(), mainFrame->document().url().string());
5838 EXPECT_EQ(item.urlString(), WebString(mainFrameLoader.currentItem()->urlStri ng())); 5845 EXPECT_EQ(item.urlString(), WebString(mainFrameLoader.currentItem()->urlStri ng()));
5839 } 5846 }
5840 5847
5841 TEST_P(ParameterizedWebFrameTest, ReloadPost) 5848 TEST_P(ParameterizedWebFrameTest, ReloadPost)
5842 { 5849 {
5843 registerMockedHttpURLLoad("reload_post.html"); 5850 registerMockedHttpURLLoad("reload_post.html");
5844 FrameTestHelpers::WebViewHelper webViewHelper(this); 5851 FrameTestHelpers::WebViewHelper webViewHelper;
5845 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true); 5852 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true);
5846 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5853 WebFrame* frame = webViewHelper.webView()->mainFrame();
5847 5854
5848 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.forms[0].submit()"); 5855 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.forms[0].submit()");
5849 // Pump requests one more time after the javascript URL has executed to 5856 // Pump requests one more time after the javascript URL has executed to
5850 // trigger the actual POST load request. 5857 // trigger the actual POST load request.
5851 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame()); 5858 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame());
5852 EXPECT_EQ(WebString::fromUTF8("POST"), frame->dataSource()->request().httpMe thod()); 5859 EXPECT_EQ(WebString::fromUTF8("POST"), frame->dataSource()->request().httpMe thod());
5853 5860
5854 FrameTestHelpers::reloadFrame(frame); 5861 FrameTestHelpers::reloadFrame(frame);
5855 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, frame->dataSource()->request( ).getCachePolicy()); 5862 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, frame->dataSource()->request( ).getCachePolicy());
5856 EXPECT_EQ(WebNavigationTypeFormResubmitted, frame->dataSource()->navigationT ype()); 5863 EXPECT_EQ(WebNavigationTypeFormResubmitted, frame->dataSource()->navigationT ype());
5857 } 5864 }
5858 5865
5859 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload) 5866 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload)
5860 { 5867 {
5861 registerMockedHttpURLLoad("fragment_middle_click.html"); 5868 registerMockedHttpURLLoad("fragment_middle_click.html");
5862 FrameTestHelpers::WebViewHelper webViewHelper(this); 5869 FrameTestHelpers::WebViewHelper webViewHelper;
5863 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue); 5870 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue);
5864 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5871 WebFrame* frame = webViewHelper.webView()->mainFrame();
5865 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader(); 5872 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader();
5866 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem(); 5873 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem();
5867 EXPECT_TRUE(firstItem); 5874 EXPECT_TRUE(firstItem);
5868 5875
5869 registerMockedHttpURLLoad("white-1x1.png"); 5876 registerMockedHttpURLLoad("white-1x1.png");
5870 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 5877 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
5871 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 5878 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem());
5872 5879
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
5936 }; 5943 };
5937 5944
5938 TEST_P(ParameterizedWebFrameTest, ReloadIframe) 5945 TEST_P(ParameterizedWebFrameTest, ReloadIframe)
5939 { 5946 {
5940 registerMockedHttpURLLoad("iframe_reload.html"); 5947 registerMockedHttpURLLoad("iframe_reload.html");
5941 registerMockedHttpURLLoad("visible_iframe.html"); 5948 registerMockedHttpURLLoad("visible_iframe.html");
5942 TestCachePolicyWebFrameClient mainClient(0); 5949 TestCachePolicyWebFrameClient mainClient(0);
5943 TestCachePolicyWebFrameClient childClient(&mainClient); 5950 TestCachePolicyWebFrameClient childClient(&mainClient);
5944 mainClient.setChildWebFrameClient(&childClient); 5951 mainClient.setChildWebFrameClient(&childClient);
5945 5952
5946 FrameTestHelpers::WebViewHelper webViewHelper(this); 5953 FrameTestHelpers::WebViewHelper webViewHelper;
5947 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, &mai nClient); 5954 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, &mai nClient);
5948 5955
5949 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl(); 5956 WebLocalFrameImpl* mainFrame = webViewHelper.webView()->mainFrameImpl();
5950 WebLocalFrameImpl* childFrame = toWebLocalFrameImpl(mainFrame->firstChild()) ; 5957 WebLocalFrameImpl* childFrame = toWebLocalFrameImpl(mainFrame->firstChild()) ;
5951 ASSERT_EQ(childFrame->client(), &childClient); 5958 ASSERT_EQ(childFrame->client(), &childClient);
5952 EXPECT_EQ(mainClient.childFrameCreationCount(), 1); 5959 EXPECT_EQ(mainClient.childFrameCreationCount(), 1);
5953 EXPECT_EQ(childClient.willSendRequestCallCount(), 1); 5960 EXPECT_EQ(childClient.willSendRequestCallCount(), 1);
5954 EXPECT_EQ(childClient.getCachePolicy(), WebCachePolicy::UseProtocolCachePoli cy); 5961 EXPECT_EQ(childClient.getCachePolicy(), WebCachePolicy::UseProtocolCachePoli cy);
5955 5962
5956 FrameTestHelpers::reloadFrame(mainFrame); 5963 FrameTestHelpers::reloadFrame(mainFrame);
(...skipping 23 matching lines...) Expand all
5980 bool frameLoadTypeReloadMainResourceSeen() const { return m_frameLoadTypeRel oadMainResourceSeen; } 5987 bool frameLoadTypeReloadMainResourceSeen() const { return m_frameLoadTypeRel oadMainResourceSeen; }
5981 5988
5982 private: 5989 private:
5983 bool m_frameLoadTypeReloadMainResourceSeen; 5990 bool m_frameLoadTypeReloadMainResourceSeen;
5984 }; 5991 };
5985 5992
5986 TEST_P(ParameterizedWebFrameTest, NavigateToSame) 5993 TEST_P(ParameterizedWebFrameTest, NavigateToSame)
5987 { 5994 {
5988 registerMockedHttpURLLoad("navigate_to_same.html"); 5995 registerMockedHttpURLLoad("navigate_to_same.html");
5989 TestSameDocumentWebFrameClient client; 5996 TestSameDocumentWebFrameClient client;
5990 FrameTestHelpers::WebViewHelper webViewHelper(this); 5997 FrameTestHelpers::WebViewHelper webViewHelper;
5991 webViewHelper.initializeAndLoad(m_baseURL + "navigate_to_same.html", true, & client); 5998 webViewHelper.initializeAndLoad(m_baseURL + "navigate_to_same.html", true, & client);
5992 EXPECT_FALSE(client.frameLoadTypeReloadMainResourceSeen()); 5999 EXPECT_FALSE(client.frameLoadTypeReloadMainResourceSeen());
5993 6000
5994 FrameLoadRequest frameRequest(0, ResourceRequest(toLocalFrame(webViewHelper. webView()->page()->mainFrame())->document()->url())); 6001 FrameLoadRequest frameRequest(0, ResourceRequest(toLocalFrame(webViewHelper. webView()->page()->mainFrame())->document()->url()));
5995 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->loader().load(fr ameRequest); 6002 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->loader().load(fr ameRequest);
5996 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame()); 6003 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webViewHelper.webView()- >mainFrame());
5997 6004
5998 EXPECT_TRUE(client.frameLoadTypeReloadMainResourceSeen()); 6005 EXPECT_TRUE(client.frameLoadTypeReloadMainResourceSeen());
5999 } 6006 }
6000 6007
(...skipping 16 matching lines...) Expand all
6017 6024
6018 private: 6025 private:
6019 int m_numOfImageRequests; 6026 int m_numOfImageRequests;
6020 }; 6027 };
6021 6028
6022 TEST_P(ParameterizedWebFrameTest, NavigateToSameNoConditionalRequestForSubresour ce) 6029 TEST_P(ParameterizedWebFrameTest, NavigateToSameNoConditionalRequestForSubresour ce)
6023 { 6030 {
6024 registerMockedHttpURLLoad("foo_with_image.html"); 6031 registerMockedHttpURLLoad("foo_with_image.html");
6025 registerMockedHttpURLLoad("white-1x1.png"); 6032 registerMockedHttpURLLoad("white-1x1.png");
6026 TestSameDocumentWithImageWebFrameClient client; 6033 TestSameDocumentWithImageWebFrameClient client;
6027 FrameTestHelpers::WebViewHelper webViewHelper(this); 6034 FrameTestHelpers::WebViewHelper webViewHelper;
6028 webViewHelper.initializeAndLoad(m_baseURL + "foo_with_image.html", true, &cl ient, nullptr, nullptr, &configureLoadsImagesAutomatically); 6035 webViewHelper.initializeAndLoad(m_baseURL + "foo_with_image.html", true, &cl ient, nullptr, nullptr, &configureLoadsImagesAutomatically);
6029 6036
6030 WebCache::clear(); 6037 WebCache::clear();
6031 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "foo_with_image.html"); 6038 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "foo_with_image.html");
6032 6039
6033 // 2 images are requested, and each triggers 2 willSendRequest() calls, 6040 // 2 images are requested, and each triggers 2 willSendRequest() calls,
6034 // once for preloading and once for the real request. 6041 // once for preloading and once for the real request.
6035 EXPECT_EQ(client.numOfImageRequests(), 4); 6042 EXPECT_EQ(client.numOfImageRequests(), 4);
6036 } 6043 }
6037 6044
6038 TEST_P(ParameterizedWebFrameTest, WebNodeImageContents) 6045 TEST_P(ParameterizedWebFrameTest, WebNodeImageContents)
6039 { 6046 {
6040 FrameTestHelpers::WebViewHelper webViewHelper(this); 6047 FrameTestHelpers::WebViewHelper webViewHelper;
6041 webViewHelper.initializeAndLoad("about:blank", true); 6048 webViewHelper.initializeAndLoad("about:blank", true);
6042 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6049 WebFrame* frame = webViewHelper.webView()->mainFrame();
6043 6050
6044 static const char bluePNG[] = "<img src=\"data:image/png;base64,iVBORw0KGgoA AAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkYPj/n4EIwDiqEF8oUT94AFIQE/cCn90I AAAAAElFTkSuQmCC\">"; 6051 static const char bluePNG[] = "<img src=\"data:image/png;base64,iVBORw0KGgoA AAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkYPj/n4EIwDiqEF8oUT94AFIQE/cCn90I AAAAAElFTkSuQmCC\">";
6045 6052
6046 // Load up the image and test that we can extract the contents. 6053 // Load up the image and test that we can extract the contents.
6047 KURL testURL = toKURL("about:blank"); 6054 KURL testURL = toKURL("about:blank");
6048 FrameTestHelpers::loadHTMLString(frame, bluePNG, testURL); 6055 FrameTestHelpers::loadHTMLString(frame, bluePNG, testURL);
6049 6056
6050 WebNode node = frame->document().body().firstChild(); 6057 WebNode node = frame->document().body().firstChild();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
6091 private: 6098 private:
6092 int m_startLoadingCount; 6099 int m_startLoadingCount;
6093 int m_stopLoadingCount; 6100 int m_stopLoadingCount;
6094 int m_differentDocumentStartCount; 6101 int m_differentDocumentStartCount;
6095 }; 6102 };
6096 6103
6097 TEST_P(ParameterizedWebFrameTest, PushStateStartsAndStops) 6104 TEST_P(ParameterizedWebFrameTest, PushStateStartsAndStops)
6098 { 6105 {
6099 registerMockedHttpURLLoad("push_state.html"); 6106 registerMockedHttpURLLoad("push_state.html");
6100 TestStartStopCallbackWebFrameClient client; 6107 TestStartStopCallbackWebFrameClient client;
6101 FrameTestHelpers::WebViewHelper webViewHelper(this); 6108 FrameTestHelpers::WebViewHelper webViewHelper;
6102 webViewHelper.initializeAndLoad(m_baseURL + "push_state.html", true, &client ); 6109 webViewHelper.initializeAndLoad(m_baseURL + "push_state.html", true, &client );
6103 6110
6104 EXPECT_EQ(client.startLoadingCount(), 2); 6111 EXPECT_EQ(client.startLoadingCount(), 2);
6105 EXPECT_EQ(client.stopLoadingCount(), 2); 6112 EXPECT_EQ(client.stopLoadingCount(), 2);
6106 EXPECT_EQ(client.differentDocumentStartCount(), 1); 6113 EXPECT_EQ(client.differentDocumentStartCount(), 1);
6107 } 6114 }
6108 6115
6109 class TestDidNavigateCommitTypeWebFrameClient : public FrameTestHelpers::TestWeb FrameClient { 6116 class TestDidNavigateCommitTypeWebFrameClient : public FrameTestHelpers::TestWeb FrameClient {
6110 public: 6117 public:
6111 TestDidNavigateCommitTypeWebFrameClient() 6118 TestDidNavigateCommitTypeWebFrameClient()
6112 : m_lastCommitType(WebHistoryInertCommit) 6119 : m_lastCommitType(WebHistoryInertCommit)
6113 { 6120 {
6114 } 6121 }
6115 6122
6116 void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, WebHistory CommitType type, bool) override 6123 void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, WebHistory CommitType type, bool) override
6117 { 6124 {
6118 m_lastCommitType = type; 6125 m_lastCommitType = type;
6119 } 6126 }
6120 6127
6121 WebHistoryCommitType lastCommitType() const { return m_lastCommitType; } 6128 WebHistoryCommitType lastCommitType() const { return m_lastCommitType; }
6122 6129
6123 private: 6130 private:
6124 WebHistoryCommitType m_lastCommitType; 6131 WebHistoryCommitType m_lastCommitType;
6125 }; 6132 };
6126 6133
6127 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType) 6134 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType)
6128 { 6135 {
6129 registerMockedHttpURLLoad("push_state.html"); 6136 registerMockedHttpURLLoad("push_state.html");
6130 TestDidNavigateCommitTypeWebFrameClient client; 6137 TestDidNavigateCommitTypeWebFrameClient client;
6131 FrameTestHelpers::WebViewHelper webViewHelper(this); 6138 FrameTestHelpers::WebViewHelper webViewHelper;
6132 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "push _state.html", true, &client); 6139 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "push _state.html", true, &client);
6133 Persistent<HistoryItem> item = toLocalFrame(webViewImpl->page()->mainFrame() )->loader().currentItem(); 6140 Persistent<HistoryItem> item = toLocalFrame(webViewImpl->page()->mainFrame() )->loader().currentItem();
6134 runPendingTasks(); 6141 runPendingTasks();
6135 6142
6136 toLocalFrame(webViewImpl->page()->mainFrame())->loader().load(FrameLoadReque st(nullptr, FrameLoader::resourceRequestFromHistoryItem(item.get(), WebCachePoli cy::UseProtocolCachePolicy)), FrameLoadTypeBackForward, item.get(), HistorySameD ocumentLoad); 6143 toLocalFrame(webViewImpl->page()->mainFrame())->loader().load(FrameLoadReque st(nullptr, FrameLoader::resourceRequestFromHistoryItem(item.get(), WebCachePoli cy::UseProtocolCachePolicy)), FrameLoadTypeBackForward, item.get(), HistorySameD ocumentLoad);
6137 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType()); 6144 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType());
6138 } 6145 }
6139 6146
6140 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 6147 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
6141 public: 6148 public:
(...skipping 18 matching lines...) Expand all
6160 WebFrame* m_frame; 6167 WebFrame* m_frame;
6161 }; 6168 };
6162 6169
6163 // Tests that the first navigation in an initially blank subframe will result in 6170 // Tests that the first navigation in an initially blank subframe will result in
6164 // a history entry being replaced and not a new one being added. 6171 // a history entry being replaced and not a new one being added.
6165 TEST_P(ParameterizedWebFrameTest, FirstBlankSubframeNavigation) 6172 TEST_P(ParameterizedWebFrameTest, FirstBlankSubframeNavigation)
6166 { 6173 {
6167 registerMockedHttpURLLoad("history.html"); 6174 registerMockedHttpURLLoad("history.html");
6168 registerMockedHttpURLLoad("find.html"); 6175 registerMockedHttpURLLoad("find.html");
6169 6176
6170 FrameTestHelpers::WebViewHelper webViewHelper(this); 6177 FrameTestHelpers::WebViewHelper webViewHelper;
6171 TestHistoryWebFrameClient client; 6178 TestHistoryWebFrameClient client;
6172 webViewHelper.initializeAndLoad("about:blank", true, &client); 6179 webViewHelper.initializeAndLoad("about:blank", true, &client);
6173 6180
6174 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6181 WebFrame* frame = webViewHelper.webView()->mainFrame();
6175 6182
6176 frame->executeScript(WebScriptSource(WebString::fromUTF8( 6183 frame->executeScript(WebScriptSource(WebString::fromUTF8(
6177 "document.body.appendChild(document.createElement('iframe'))"))); 6184 "document.body.appendChild(document.createElement('iframe'))")));
6178 6185
6179 WebFrame* iframe = frame->firstChild(); 6186 WebFrame* iframe = frame->firstChild();
6180 ASSERT_EQ(&client, toWebLocalFrameImpl(iframe)->client()); 6187 ASSERT_EQ(&client, toWebLocalFrameImpl(iframe)->client());
(...skipping 12 matching lines...) Expand all
6193 EXPECT_FALSE(client.replacesCurrentHistoryItem()); 6200 EXPECT_FALSE(client.replacesCurrentHistoryItem());
6194 } 6201 }
6195 6202
6196 // Tests that a navigation in a frame with a non-blank initial URL will create 6203 // Tests that a navigation in a frame with a non-blank initial URL will create
6197 // a new history item, unlike the case above. 6204 // a new history item, unlike the case above.
6198 TEST_P(ParameterizedWebFrameTest, FirstNonBlankSubframeNavigation) 6205 TEST_P(ParameterizedWebFrameTest, FirstNonBlankSubframeNavigation)
6199 { 6206 {
6200 registerMockedHttpURLLoad("history.html"); 6207 registerMockedHttpURLLoad("history.html");
6201 registerMockedHttpURLLoad("find.html"); 6208 registerMockedHttpURLLoad("find.html");
6202 6209
6203 FrameTestHelpers::WebViewHelper webViewHelper(this); 6210 FrameTestHelpers::WebViewHelper webViewHelper;
6204 TestHistoryWebFrameClient client; 6211 TestHistoryWebFrameClient client;
6205 webViewHelper.initializeAndLoad("about:blank", true, &client); 6212 webViewHelper.initializeAndLoad("about:blank", true, &client);
6206 6213
6207 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6214 WebFrame* frame = webViewHelper.webView()->mainFrame();
6208 6215
6209 std::string url1 = m_baseURL + "history.html"; 6216 std::string url1 = m_baseURL + "history.html";
6210 FrameTestHelpers::loadFrame(frame, 6217 FrameTestHelpers::loadFrame(frame,
6211 "javascript:var f = document.createElement('iframe'); " 6218 "javascript:var f = document.createElement('iframe'); "
6212 "f.src = '" + url1 + "';" 6219 "f.src = '" + url1 + "';"
6213 "document.body.appendChild(f)"); 6220 "document.body.appendChild(f)");
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
6250 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal()); 6257 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal());
6251 ASSERT_TRUE(webScrollLayer->userScrollableVertical()); 6258 ASSERT_TRUE(webScrollLayer->userScrollableVertical());
6252 } 6259 }
6253 6260
6254 // Test that currentHistoryItem reflects the current page, not the provisional l oad. 6261 // Test that currentHistoryItem reflects the current page, not the provisional l oad.
6255 TEST_P(ParameterizedWebFrameTest, CurrentHistoryItem) 6262 TEST_P(ParameterizedWebFrameTest, CurrentHistoryItem)
6256 { 6263 {
6257 registerMockedHttpURLLoad("fixed_layout.html"); 6264 registerMockedHttpURLLoad("fixed_layout.html");
6258 std::string url = m_baseURL + "fixed_layout.html"; 6265 std::string url = m_baseURL + "fixed_layout.html";
6259 6266
6260 FrameTestHelpers::WebViewHelper webViewHelper(this); 6267 FrameTestHelpers::WebViewHelper webViewHelper;
6261 webViewHelper.initialize(); 6268 webViewHelper.initialize();
6262 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6269 WebFrame* frame = webViewHelper.webView()->mainFrame();
6263 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader(); 6270 const FrameLoader& mainFrameLoader = webViewHelper.webView()->mainFrameImpl( )->frame()->loader();
6264 WebURLRequest request; 6271 WebURLRequest request;
6265 request.setURL(toKURL(url)); 6272 request.setURL(toKURL(url));
6266 request.setRequestorOrigin(WebSecurityOrigin::createUnique()); 6273 request.setRequestorOrigin(WebSecurityOrigin::createUnique());
6267 frame->loadRequest(request); 6274 frame->loadRequest(request);
6268 6275
6269 // Before commit, there is no history item. 6276 // Before commit, there is no history item.
6270 EXPECT_FALSE(mainFrameLoader.currentItem()); 6277 EXPECT_FALSE(mainFrameLoader.currentItem());
(...skipping 20 matching lines...) Expand all
6291 6298
6292 private: 6299 private:
6293 int m_callCount; 6300 int m_callCount;
6294 }; 6301 };
6295 6302
6296 // Test that we don't crash if WebFrameClient::createChildFrame() fails. 6303 // Test that we don't crash if WebFrameClient::createChildFrame() fails.
6297 TEST_P(ParameterizedWebFrameTest, CreateChildFrameFailure) 6304 TEST_P(ParameterizedWebFrameTest, CreateChildFrameFailure)
6298 { 6305 {
6299 registerMockedHttpURLLoad("create_child_frame_fail.html"); 6306 registerMockedHttpURLLoad("create_child_frame_fail.html");
6300 FailCreateChildFrame client; 6307 FailCreateChildFrame client;
6301 FrameTestHelpers::WebViewHelper webViewHelper(this); 6308 FrameTestHelpers::WebViewHelper webViewHelper;
6302 webViewHelper.initializeAndLoad(m_baseURL + "create_child_frame_fail.html", true, &client); 6309 webViewHelper.initializeAndLoad(m_baseURL + "create_child_frame_fail.html", true, &client);
6303 6310
6304 EXPECT_EQ(1, client.callCount()); 6311 EXPECT_EQ(1, client.callCount());
6305 } 6312 }
6306 6313
6307 TEST_P(ParameterizedWebFrameTest, fixedPositionInFixedViewport) 6314 TEST_P(ParameterizedWebFrameTest, fixedPositionInFixedViewport)
6308 { 6315 {
6309 registerMockedHttpURLLoad("fixed-position-in-fixed-viewport.html"); 6316 registerMockedHttpURLLoad("fixed-position-in-fixed-viewport.html");
6310 FrameTestHelpers::WebViewHelper webViewHelper(this); 6317 FrameTestHelpers::WebViewHelper webViewHelper;
6311 webViewHelper.initializeAndLoad(m_baseURL + "fixed-position-in-fixed-viewpor t.html", true, nullptr, nullptr, nullptr, enableViewportSettings); 6318 webViewHelper.initializeAndLoad(m_baseURL + "fixed-position-in-fixed-viewpor t.html", true, nullptr, nullptr, nullptr, enableViewportSettings);
6312 6319
6313 WebViewImpl* webView = webViewHelper.webView(); 6320 WebViewImpl* webView = webViewHelper.webView();
6314 webViewHelper.resize(WebSize(100, 100)); 6321 webViewHelper.resize(WebSize(100, 100));
6315 6322
6316 Document* document = webView->mainFrameImpl()->frame()->document(); 6323 Document* document = webView->mainFrameImpl()->frame()->document();
6317 Element* bottomFixed = document->getElementById("bottom-fixed"); 6324 Element* bottomFixed = document->getElementById("bottom-fixed");
6318 Element* topBottomFixed = document->getElementById("top-bottom-fixed"); 6325 Element* topBottomFixed = document->getElementById("top-bottom-fixed");
6319 Element* rightFixed = document->getElementById("right-fixed"); 6326 Element* rightFixed = document->getElementById("right-fixed");
6320 Element* leftRightFixed = document->getElementById("left-right-fixed"); 6327 Element* leftRightFixed = document->getElementById("left-right-fixed");
6321 6328
6322 // The layout viewport will hit the min-scale limit of 0.25, so it'll be 400 x800. 6329 // The layout viewport will hit the min-scale limit of 0.25, so it'll be 400 x800.
6323 webViewHelper.resize(WebSize(100, 200)); 6330 webViewHelper.resize(WebSize(100, 200));
6324 EXPECT_EQ(800, bottomFixed->offsetTop() + bottomFixed->offsetHeight()); 6331 EXPECT_EQ(800, bottomFixed->offsetTop() + bottomFixed->offsetHeight());
6325 EXPECT_EQ(800, topBottomFixed->offsetHeight()); 6332 EXPECT_EQ(800, topBottomFixed->offsetHeight());
6326 6333
6327 // Now the layout viewport hits the content width limit of 500px so it'll be 500x500. 6334 // Now the layout viewport hits the content width limit of 500px so it'll be 500x500.
6328 webViewHelper.resize(WebSize(200, 200)); 6335 webViewHelper.resize(WebSize(200, 200));
6329 EXPECT_EQ(500, rightFixed->offsetLeft() + rightFixed->offsetWidth()); 6336 EXPECT_EQ(500, rightFixed->offsetLeft() + rightFixed->offsetWidth());
6330 EXPECT_EQ(500, leftRightFixed->offsetWidth()); 6337 EXPECT_EQ(500, leftRightFixed->offsetWidth());
6331 } 6338 }
6332 6339
6333 TEST_P(ParameterizedWebFrameTest, FrameViewMoveWithSetFrameRect) 6340 TEST_P(ParameterizedWebFrameTest, FrameViewMoveWithSetFrameRect)
6334 { 6341 {
6335 FrameTestHelpers::WebViewHelper webViewHelper(this); 6342 FrameTestHelpers::WebViewHelper webViewHelper;
6336 webViewHelper.initializeAndLoad("about:blank"); 6343 webViewHelper.initializeAndLoad("about:blank");
6337 webViewHelper.resize(WebSize(200, 200)); 6344 webViewHelper.resize(WebSize(200, 200));
6338 webViewHelper.webView()->updateAllLifecyclePhases(); 6345 webViewHelper.webView()->updateAllLifecyclePhases();
6339 6346
6340 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView() ; 6347 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView() ;
6341 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect()); 6348 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect());
6342 frameView->setFrameRect(IntRect(100, 100, 200, 200)); 6349 frameView->setFrameRect(IntRect(100, 100, 200, 200));
6343 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect()); 6350 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect());
6344 } 6351 }
6345 6352
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
6423 webViewHelper.webView()->updateAllLifecyclePhases(); 6430 webViewHelper.webView()->updateAllLifecyclePhases();
6424 6431
6425 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView() ; 6432 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView() ;
6426 EXPECT_LT(frameView->maximumScrollPosition().x(), 0); 6433 EXPECT_LT(frameView->maximumScrollPosition().x(), 0);
6427 } 6434 }
6428 6435
6429 TEST_P(ParameterizedWebFrameTest, FullscreenLayerSize) 6436 TEST_P(ParameterizedWebFrameTest, FullscreenLayerSize)
6430 { 6437 {
6431 FakeCompositingWebViewClient client; 6438 FakeCompositingWebViewClient client;
6432 registerMockedHttpURLLoad("fullscreen_div.html"); 6439 registerMockedHttpURLLoad("fullscreen_div.html");
6433 FrameTestHelpers::WebViewHelper webViewHelper(this); 6440 FrameTestHelpers::WebViewHelper webViewHelper;
6434 int viewportWidth = 640; 6441 int viewportWidth = 640;
6435 int viewportHeight = 480; 6442 int viewportHeight = 480;
6436 client.m_screenInfo.rect.width = viewportWidth; 6443 client.m_screenInfo.rect.width = viewportWidth;
6437 client.m_screenInfo.rect.height = viewportHeight; 6444 client.m_screenInfo.rect.height = viewportHeight;
6438 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, nullptr, &client, nullptr, configureAndroid); 6445 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, nullptr, &client, nullptr, configureAndroid);
6439 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 6446 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
6440 webViewImpl->updateAllLifecyclePhases(); 6447 webViewImpl->updateAllLifecyclePhases();
6441 6448
6442 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); 6449 Document* document = webViewImpl->mainFrameImpl()->frame()->document();
6443 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); 6450 UserGestureIndicator gesture(DefinitelyProcessingUserGesture);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
6496 ASSERT_TRUE(layoutViewportScrollLayer->userScrollableHorizontal()); 6503 ASSERT_TRUE(layoutViewportScrollLayer->userScrollableHorizontal());
6497 ASSERT_TRUE(layoutViewportScrollLayer->userScrollableVertical()); 6504 ASSERT_TRUE(layoutViewportScrollLayer->userScrollableVertical());
6498 ASSERT_TRUE(visualViewportScrollLayer->userScrollableHorizontal()); 6505 ASSERT_TRUE(visualViewportScrollLayer->userScrollableHorizontal());
6499 ASSERT_TRUE(visualViewportScrollLayer->userScrollableVertical()); 6506 ASSERT_TRUE(visualViewportScrollLayer->userScrollableVertical());
6500 } 6507 }
6501 6508
6502 TEST_P(ParameterizedWebFrameTest, FullscreenMainFrame) 6509 TEST_P(ParameterizedWebFrameTest, FullscreenMainFrame)
6503 { 6510 {
6504 FakeCompositingWebViewClient client; 6511 FakeCompositingWebViewClient client;
6505 registerMockedHttpURLLoad("fullscreen_div.html"); 6512 registerMockedHttpURLLoad("fullscreen_div.html");
6506 FrameTestHelpers::WebViewHelper webViewHelper(this); 6513 FrameTestHelpers::WebViewHelper webViewHelper;
6507 int viewportWidth = 640; 6514 int viewportWidth = 640;
6508 int viewportHeight = 480; 6515 int viewportHeight = 480;
6509 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, nullptr, &client, nullptr, configureAndroid); 6516 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, nullptr, &client, nullptr, configureAndroid);
6510 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 6517 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
6511 webViewImpl->updateAllLifecyclePhases(); 6518 webViewImpl->updateAllLifecyclePhases();
6512 6519
6513 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); 6520 Document* document = webViewImpl->mainFrameImpl()->frame()->document();
6514 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); 6521 UserGestureIndicator gesture(DefinitelyProcessingUserGesture);
6515 Fullscreen::from(*document).requestFullscreen(*document->documentElement(), Fullscreen::PrefixedRequest); 6522 Fullscreen::from(*document).requestFullscreen(*document->documentElement(), Fullscreen::PrefixedRequest);
6516 webViewImpl->didEnterFullscreen(); 6523 webViewImpl->didEnterFullscreen();
(...skipping 11 matching lines...) Expand all
6528 ASSERT_TRUE(webScrollLayer->scrollable()); 6535 ASSERT_TRUE(webScrollLayer->scrollable());
6529 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal()); 6536 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal());
6530 ASSERT_TRUE(webScrollLayer->userScrollableVertical()); 6537 ASSERT_TRUE(webScrollLayer->userScrollableVertical());
6531 } 6538 }
6532 6539
6533 TEST_P(ParameterizedWebFrameTest, FullscreenSubframe) 6540 TEST_P(ParameterizedWebFrameTest, FullscreenSubframe)
6534 { 6541 {
6535 FakeCompositingWebViewClient client; 6542 FakeCompositingWebViewClient client;
6536 registerMockedHttpURLLoad("fullscreen_iframe.html"); 6543 registerMockedHttpURLLoad("fullscreen_iframe.html");
6537 registerMockedHttpURLLoad("fullscreen_div.html"); 6544 registerMockedHttpURLLoad("fullscreen_div.html");
6538 FrameTestHelpers::WebViewHelper webViewHelper(this); 6545 FrameTestHelpers::WebViewHelper webViewHelper;
6539 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_iframe.html", true, nullptr, &client, nullptr, configureAndroid); 6546 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_iframe.html", true, nullptr, &client, nullptr, configureAndroid);
6540 int viewportWidth = 640; 6547 int viewportWidth = 640;
6541 int viewportHeight = 480; 6548 int viewportHeight = 480;
6542 client.m_screenInfo.rect.width = viewportWidth; 6549 client.m_screenInfo.rect.width = viewportWidth;
6543 client.m_screenInfo.rect.height = viewportHeight; 6550 client.m_screenInfo.rect.height = viewportHeight;
6544 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 6551 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
6545 webViewImpl->updateAllLifecyclePhases(); 6552 webViewImpl->updateAllLifecyclePhases();
6546 6553
6547 Document* document = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame( )->firstChild())->frame()->document(); 6554 Document* document = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame( )->firstChild())->frame()->document();
6548 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); 6555 UserGestureIndicator gesture(DefinitelyProcessingUserGesture);
(...skipping 13 matching lines...) Expand all
6562 webViewHelper.resize(WebSize(viewportHeight, viewportWidth)); 6569 webViewHelper.resize(WebSize(viewportHeight, viewportWidth));
6563 webViewImpl->updateAllLifecyclePhases(); 6570 webViewImpl->updateAllLifecyclePhases();
6564 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalWidth().toInt()); 6571 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalWidth().toInt());
6565 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalHeight().toInt()); 6572 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalHeight().toInt());
6566 } 6573 }
6567 6574
6568 TEST_P(ParameterizedWebFrameTest, FullscreenWithTinyViewport) 6575 TEST_P(ParameterizedWebFrameTest, FullscreenWithTinyViewport)
6569 { 6576 {
6570 FakeCompositingWebViewClient client; 6577 FakeCompositingWebViewClient client;
6571 registerMockedHttpURLLoad("viewport-tiny.html"); 6578 registerMockedHttpURLLoad("viewport-tiny.html");
6572 FrameTestHelpers::WebViewHelper webViewHelper(this); 6579 FrameTestHelpers::WebViewHelper webViewHelper;
6573 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, nullptr, &client, nullptr, configureAndroid); 6580 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, nullptr, &client, nullptr, configureAndroid);
6574 int viewportWidth = 384; 6581 int viewportWidth = 384;
6575 int viewportHeight = 640; 6582 int viewportHeight = 640;
6576 client.m_screenInfo.rect.width = viewportWidth; 6583 client.m_screenInfo.rect.width = viewportWidth;
6577 client.m_screenInfo.rect.height = viewportHeight; 6584 client.m_screenInfo.rect.height = viewportHeight;
6578 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 6585 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
6579 webViewImpl->updateAllLifecyclePhases(); 6586 webViewImpl->updateAllLifecyclePhases();
6580 6587
6581 LayoutViewItem layoutViewItem = webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutViewItem(); 6588 LayoutViewItem layoutViewItem = webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutViewItem();
6582 EXPECT_EQ(320, layoutViewItem.logicalWidth().floor()); 6589 EXPECT_EQ(320, layoutViewItem.logicalWidth().floor());
(...skipping 19 matching lines...) Expand all
6602 EXPECT_EQ(533, layoutViewItem.logicalHeight().floor()); 6609 EXPECT_EQ(533, layoutViewItem.logicalHeight().floor());
6603 EXPECT_FLOAT_EQ(1.2, webViewImpl->pageScaleFactor()); 6610 EXPECT_FLOAT_EQ(1.2, webViewImpl->pageScaleFactor());
6604 EXPECT_FLOAT_EQ(1.2, webViewImpl->minimumPageScaleFactor()); 6611 EXPECT_FLOAT_EQ(1.2, webViewImpl->minimumPageScaleFactor());
6605 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor()); 6612 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor());
6606 } 6613 }
6607 6614
6608 TEST_P(ParameterizedWebFrameTest, FullscreenResizeWithTinyViewport) 6615 TEST_P(ParameterizedWebFrameTest, FullscreenResizeWithTinyViewport)
6609 { 6616 {
6610 FakeCompositingWebViewClient client; 6617 FakeCompositingWebViewClient client;
6611 registerMockedHttpURLLoad("viewport-tiny.html"); 6618 registerMockedHttpURLLoad("viewport-tiny.html");
6612 FrameTestHelpers::WebViewHelper webViewHelper(this); 6619 FrameTestHelpers::WebViewHelper webViewHelper;
6613 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, nullptr, &client, nullptr, configureAndroid); 6620 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, nullptr, &client, nullptr, configureAndroid);
6614 int viewportWidth = 384; 6621 int viewportWidth = 384;
6615 int viewportHeight = 640; 6622 int viewportHeight = 640;
6616 client.m_screenInfo.rect.width = viewportWidth; 6623 client.m_screenInfo.rect.width = viewportWidth;
6617 client.m_screenInfo.rect.height = viewportHeight; 6624 client.m_screenInfo.rect.height = viewportHeight;
6618 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 6625 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
6619 webViewImpl->updateAllLifecyclePhases(); 6626 webViewImpl->updateAllLifecyclePhases();
6620 6627
6621 LayoutViewItem layoutViewItem = webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutViewItem(); 6628 LayoutViewItem layoutViewItem = webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutViewItem();
6622 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); 6629 Document* document = webViewImpl->mainFrameImpl()->frame()->document();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
6656 // The purpose of this test is to more precisely simulate the sequence of 6663 // The purpose of this test is to more precisely simulate the sequence of
6657 // resize and switching fullscreen state operations on WebView, with the 6664 // resize and switching fullscreen state operations on WebView, with the
6658 // interference from Android status bars like a real device does. 6665 // interference from Android status bars like a real device does.
6659 // This verifies we handle the transition and restore states correctly. 6666 // This verifies we handle the transition and restore states correctly.
6660 WebSize screenSizeMinusStatusBarsMinusUrlBar(598, 303); 6667 WebSize screenSizeMinusStatusBarsMinusUrlBar(598, 303);
6661 WebSize screenSizeMinusStatusBars(598, 359); 6668 WebSize screenSizeMinusStatusBars(598, 359);
6662 WebSize screenSize(640, 384); 6669 WebSize screenSize(640, 384);
6663 6670
6664 FakeCompositingWebViewClient client; 6671 FakeCompositingWebViewClient client;
6665 registerMockedHttpURLLoad("fullscreen_restore_scale_factor.html"); 6672 registerMockedHttpURLLoad("fullscreen_restore_scale_factor.html");
6666 FrameTestHelpers::WebViewHelper webViewHelper(this); 6673 FrameTestHelpers::WebViewHelper webViewHelper;
6667 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_restore_scale_factor.html", true, nullptr, &client, nullptr, &configureAn droid); 6674 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_restore_scale_factor.html", true, nullptr, &client, nullptr, &configureAn droid);
6668 client.m_screenInfo.rect.width = screenSizeMinusStatusBarsMinusUrlBar.width; 6675 client.m_screenInfo.rect.width = screenSizeMinusStatusBarsMinusUrlBar.width;
6669 client.m_screenInfo.rect.height = screenSizeMinusStatusBarsMinusUrlBar.heigh t; 6676 client.m_screenInfo.rect.height = screenSizeMinusStatusBarsMinusUrlBar.heigh t;
6670 webViewHelper.resize(screenSizeMinusStatusBarsMinusUrlBar); 6677 webViewHelper.resize(screenSizeMinusStatusBarsMinusUrlBar);
6671 LayoutViewItem layoutViewItem = webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutViewItem(); 6678 LayoutViewItem layoutViewItem = webViewHelper.webView()->mainFrameImpl()->fr ameView()->layoutViewItem();
6672 EXPECT_EQ(screenSizeMinusStatusBarsMinusUrlBar.width, layoutViewItem.logical Width().floor()); 6679 EXPECT_EQ(screenSizeMinusStatusBarsMinusUrlBar.width, layoutViewItem.logical Width().floor());
6673 EXPECT_EQ(screenSizeMinusStatusBarsMinusUrlBar.height, layoutViewItem.logica lHeight().floor()); 6680 EXPECT_EQ(screenSizeMinusStatusBarsMinusUrlBar.height, layoutViewItem.logica lHeight().floor());
6674 EXPECT_FLOAT_EQ(1.0, webViewImpl->pageScaleFactor()); 6681 EXPECT_FLOAT_EQ(1.0, webViewImpl->pageScaleFactor());
6675 EXPECT_FLOAT_EQ(1.0, webViewImpl->minimumPageScaleFactor()); 6682 EXPECT_FLOAT_EQ(1.0, webViewImpl->minimumPageScaleFactor());
6676 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor()); 6683 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
6708 EXPECT_FLOAT_EQ(1.0, webViewImpl->pageScaleFactor()); 6715 EXPECT_FLOAT_EQ(1.0, webViewImpl->pageScaleFactor());
6709 EXPECT_FLOAT_EQ(1.0, webViewImpl->minimumPageScaleFactor()); 6716 EXPECT_FLOAT_EQ(1.0, webViewImpl->minimumPageScaleFactor());
6710 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor()); 6717 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor());
6711 } 6718 }
6712 6719
6713 // Tests that leaving fullscreen by navigating to a new page resets the 6720 // Tests that leaving fullscreen by navigating to a new page resets the
6714 // fullscreen page scale constraints. 6721 // fullscreen page scale constraints.
6715 TEST_P(ParameterizedWebFrameTest, ClearFullscreenConstraintsOnNavigation) 6722 TEST_P(ParameterizedWebFrameTest, ClearFullscreenConstraintsOnNavigation)
6716 { 6723 {
6717 registerMockedHttpURLLoad("viewport-tiny.html"); 6724 registerMockedHttpURLLoad("viewport-tiny.html");
6718 FrameTestHelpers::WebViewHelper webViewHelper(this); 6725 FrameTestHelpers::WebViewHelper webViewHelper;
6719 int viewportWidth = 100; 6726 int viewportWidth = 100;
6720 int viewportHeight = 200; 6727 int viewportHeight = 200;
6721 6728
6722 WebViewImpl* webViewImpl = 6729 WebViewImpl* webViewImpl =
6723 webViewHelper.initializeAndLoad( 6730 webViewHelper.initializeAndLoad(
6724 m_baseURL + "viewport-tiny.html", 6731 m_baseURL + "viewport-tiny.html",
6725 true, 6732 true,
6726 nullptr, 6733 nullptr,
6727 nullptr, 6734 nullptr,
6728 nullptr, 6735 nullptr,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
6771 webViewImpl->mainFrameImpl()->frameView()->layoutViewItem(); 6778 webViewImpl->mainFrameImpl()->frameView()->layoutViewItem();
6772 EXPECT_EQ(200, layoutViewItem.logicalWidth().floor()); 6779 EXPECT_EQ(200, layoutViewItem.logicalWidth().floor());
6773 EXPECT_EQ(400, layoutViewItem.logicalHeight().floor()); 6780 EXPECT_EQ(400, layoutViewItem.logicalHeight().floor());
6774 EXPECT_FLOAT_EQ(0.5, webViewImpl->minimumPageScaleFactor()); 6781 EXPECT_FLOAT_EQ(0.5, webViewImpl->minimumPageScaleFactor());
6775 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor()); 6782 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor());
6776 } 6783 }
6777 6784
6778 TEST_P(ParameterizedWebFrameTest, LayoutBlockPercentHeightDescendants) 6785 TEST_P(ParameterizedWebFrameTest, LayoutBlockPercentHeightDescendants)
6779 { 6786 {
6780 registerMockedHttpURLLoad("percent-height-descendants.html"); 6787 registerMockedHttpURLLoad("percent-height-descendants.html");
6781 FrameTestHelpers::WebViewHelper webViewHelper(this); 6788 FrameTestHelpers::WebViewHelper webViewHelper;
6782 webViewHelper.initializeAndLoad(m_baseURL + "percent-height-descendants.html "); 6789 webViewHelper.initializeAndLoad(m_baseURL + "percent-height-descendants.html ");
6783 6790
6784 WebViewImpl* webView = webViewHelper.webView(); 6791 WebViewImpl* webView = webViewHelper.webView();
6785 webViewHelper.resize(WebSize(800, 800)); 6792 webViewHelper.resize(WebSize(800, 800));
6786 webView->updateAllLifecyclePhases(); 6793 webView->updateAllLifecyclePhases();
6787 6794
6788 Document* document = webView->mainFrameImpl()->frame()->document(); 6795 Document* document = webView->mainFrameImpl()->frame()->document();
6789 LayoutBlock* container = toLayoutBlock(document->getElementById("container") ->layoutObject()); 6796 LayoutBlock* container = toLayoutBlock(document->getElementById("container") ->layoutObject());
6790 LayoutBox* percentHeightInAnonymous = toLayoutBox(document->getElementById(" percent-height-in-anonymous")->layoutObject()); 6797 LayoutBox* percentHeightInAnonymous = toLayoutBox(document->getElementById(" percent-height-in-anonymous")->layoutObject());
6791 LayoutBox* percentHeightDirectChild = toLayoutBox(document->getElementById(" percent-height-direct-child")->layoutObject()); 6798 LayoutBox* percentHeightDirectChild = toLayoutBox(document->getElementById(" percent-height-direct-child")->layoutObject());
6792 6799
6793 EXPECT_TRUE(container->hasPercentHeightDescendant(percentHeightInAnonymous)) ; 6800 EXPECT_TRUE(container->hasPercentHeightDescendant(percentHeightInAnonymous)) ;
6794 EXPECT_TRUE(container->hasPercentHeightDescendant(percentHeightDirectChild)) ; 6801 EXPECT_TRUE(container->hasPercentHeightDescendant(percentHeightDirectChild)) ;
6795 6802
6796 ASSERT_TRUE(container->percentHeightDescendants()); 6803 ASSERT_TRUE(container->percentHeightDescendants());
6797 ASSERT_TRUE(container->hasPercentHeightDescendants()); 6804 ASSERT_TRUE(container->hasPercentHeightDescendants());
6798 EXPECT_EQ(2U, container->percentHeightDescendants()->size()); 6805 EXPECT_EQ(2U, container->percentHeightDescendants()->size());
6799 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightInA nonymous)); 6806 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightInA nonymous));
6800 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightDir ectChild)); 6807 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightDir ectChild));
6801 6808
6802 LayoutBlock* anonymousBlock = percentHeightInAnonymous->containingBlock(); 6809 LayoutBlock* anonymousBlock = percentHeightInAnonymous->containingBlock();
6803 EXPECT_TRUE(anonymousBlock->isAnonymous()); 6810 EXPECT_TRUE(anonymousBlock->isAnonymous());
6804 EXPECT_FALSE(anonymousBlock->hasPercentHeightDescendants()); 6811 EXPECT_FALSE(anonymousBlock->hasPercentHeightDescendants());
6805 } 6812 }
6806 6813
6807 TEST_P(ParameterizedWebFrameTest, HasVisibleContentOnVisibleFrames) 6814 TEST_P(ParameterizedWebFrameTest, HasVisibleContentOnVisibleFrames)
6808 { 6815 {
6809 registerMockedHttpURLLoad("visible_frames.html"); 6816 registerMockedHttpURLLoad("visible_frames.html");
6810 FrameTestHelpers::WebViewHelper webViewHelper(this); 6817 FrameTestHelpers::WebViewHelper webViewHelper;
6811 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "visi ble_frames.html"); 6818 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "visi ble_frames.html");
6812 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) { 6819 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) {
6813 EXPECT_TRUE(frame->hasVisibleContent()); 6820 EXPECT_TRUE(frame->hasVisibleContent());
6814 } 6821 }
6815 } 6822 }
6816 6823
6817 TEST_P(ParameterizedWebFrameTest, HasVisibleContentOnHiddenFrames) 6824 TEST_P(ParameterizedWebFrameTest, HasVisibleContentOnHiddenFrames)
6818 { 6825 {
6819 registerMockedHttpURLLoad("hidden_frames.html"); 6826 registerMockedHttpURLLoad("hidden_frames.html");
6820 FrameTestHelpers::WebViewHelper webViewHelper(this); 6827 FrameTestHelpers::WebViewHelper webViewHelper;
6821 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "hidd en_frames.html"); 6828 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "hidd en_frames.html");
6822 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) { 6829 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) {
6823 EXPECT_FALSE(frame->hasVisibleContent()); 6830 EXPECT_FALSE(frame->hasVisibleContent());
6824 } 6831 }
6825 } 6832 }
6826 6833
6827 class ManifestChangeWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 6834 class ManifestChangeWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
6828 public: 6835 public:
6829 ManifestChangeWebFrameClient() : m_manifestChangeCount(0) { } 6836 ManifestChangeWebFrameClient() : m_manifestChangeCount(0) { }
6830 void didChangeManifest() override 6837 void didChangeManifest() override
6831 { 6838 {
6832 ++m_manifestChangeCount; 6839 ++m_manifestChangeCount;
6833 } 6840 }
6834 6841
6835 int manifestChangeCount() { return m_manifestChangeCount; } 6842 int manifestChangeCount() { return m_manifestChangeCount; }
6836 6843
6837 private: 6844 private:
6838 int m_manifestChangeCount; 6845 int m_manifestChangeCount;
6839 }; 6846 };
6840 6847
6841 TEST_P(ParameterizedWebFrameTest, NotifyManifestChange) 6848 TEST_P(ParameterizedWebFrameTest, NotifyManifestChange)
6842 { 6849 {
6843 registerMockedHttpURLLoad("link-manifest-change.html"); 6850 registerMockedHttpURLLoad("link-manifest-change.html");
6844 6851
6845 ManifestChangeWebFrameClient webFrameClient; 6852 ManifestChangeWebFrameClient webFrameClient;
6846 FrameTestHelpers::WebViewHelper webViewHelper(this); 6853 FrameTestHelpers::WebViewHelper webViewHelper;
6847 webViewHelper.initializeAndLoad(m_baseURL + "link-manifest-change.html", tru e, &webFrameClient); 6854 webViewHelper.initializeAndLoad(m_baseURL + "link-manifest-change.html", tru e, &webFrameClient);
6848 6855
6849 EXPECT_EQ(14, webFrameClient.manifestChangeCount()); 6856 EXPECT_EQ(14, webFrameClient.manifestChangeCount());
6850 } 6857 }
6851 6858
6852 static Resource* fetchManifest(Document* document, const KURL& url) 6859 static Resource* fetchManifest(Document* document, const KURL& url)
6853 { 6860 {
6854 FetchRequest fetchRequest = FetchRequest(ResourceRequest(url), FetchInitiato rInfo()); 6861 FetchRequest fetchRequest = FetchRequest(ResourceRequest(url), FetchInitiato rInfo());
6855 fetchRequest.mutableResourceRequest().setRequestContext(WebURLRequest::Reque stContextManifest); 6862 fetchRequest.mutableResourceRequest().setRequestContext(WebURLRequest::Reque stContextManifest);
6856 6863
6857 return RawResource::fetchSynchronously(fetchRequest, document->fetcher()); 6864 return RawResource::fetchSynchronously(fetchRequest, document->fetcher());
6858 } 6865 }
6859 6866
6860 TEST_P(ParameterizedWebFrameTest, ManifestFetch) 6867 TEST_P(ParameterizedWebFrameTest, ManifestFetch)
6861 { 6868 {
6862 registerMockedHttpURLLoad("foo.html"); 6869 registerMockedHttpURLLoad("foo.html");
6863 registerMockedHttpURLLoad("link-manifest-fetch.json"); 6870 registerMockedHttpURLLoad("link-manifest-fetch.json");
6864 6871
6865 FrameTestHelpers::WebViewHelper webViewHelper(this); 6872 FrameTestHelpers::WebViewHelper webViewHelper;
6866 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6873 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6867 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment(); 6874 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment();
6868 6875
6869 Resource* resource = fetchManifest(document, toKURL(m_baseURL + "link-manife st-fetch.json")); 6876 Resource* resource = fetchManifest(document, toKURL(m_baseURL + "link-manife st-fetch.json"));
6870 6877
6871 EXPECT_TRUE(resource->isLoaded()); 6878 EXPECT_TRUE(resource->isLoaded());
6872 } 6879 }
6873 6880
6874 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchAllow) 6881 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchAllow)
6875 { 6882 {
6876 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json"); 6883 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json");
6877 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src *"); 6884 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src *");
6878 6885
6879 FrameTestHelpers::WebViewHelper webViewHelper(this); 6886 FrameTestHelpers::WebViewHelper webViewHelper;
6880 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6887 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6881 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment(); 6888 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment();
6882 6889
6883 Resource* resource = fetchManifest(document, toKURL(m_notBaseURL + "link-man ifest-fetch.json")); 6890 Resource* resource = fetchManifest(document, toKURL(m_notBaseURL + "link-man ifest-fetch.json"));
6884 6891
6885 EXPECT_TRUE(resource->isLoaded()); 6892 EXPECT_TRUE(resource->isLoaded());
6886 } 6893 }
6887 6894
6888 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchSelf) 6895 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchSelf)
6889 { 6896 {
6890 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json"); 6897 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json");
6891 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'"); 6898 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'");
6892 6899
6893 FrameTestHelpers::WebViewHelper webViewHelper(this); 6900 FrameTestHelpers::WebViewHelper webViewHelper;
6894 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6901 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6895 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment(); 6902 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment();
6896 6903
6897 Resource* resource = fetchManifest(document, toKURL(m_notBaseURL + "link-man ifest-fetch.json")); 6904 Resource* resource = fetchManifest(document, toKURL(m_notBaseURL + "link-man ifest-fetch.json"));
6898 6905
6899 EXPECT_EQ(0, resource); // Fetching resource wasn't allowed. 6906 EXPECT_EQ(0, resource); // Fetching resource wasn't allowed.
6900 } 6907 }
6901 6908
6902 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchSelfReportOnly) 6909 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchSelfReportOnly)
6903 { 6910 {
6904 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json"); 6911 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json");
6905 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'", /* repor t only */ true); 6912 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'", /* repor t only */ true);
6906 6913
6907 FrameTestHelpers::WebViewHelper webViewHelper(this); 6914 FrameTestHelpers::WebViewHelper webViewHelper;
6908 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6915 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6909 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment(); 6916 Document* document = webViewHelper.webView()->mainFrameImpl()->frame()->docu ment();
6910 6917
6911 Resource* resource = fetchManifest(document, toKURL(m_notBaseURL + "link-man ifest-fetch.json")); 6918 Resource* resource = fetchManifest(document, toKURL(m_notBaseURL + "link-man ifest-fetch.json"));
6912 6919
6913 EXPECT_TRUE(resource->isLoaded()); 6920 EXPECT_TRUE(resource->isLoaded());
6914 } 6921 }
6915 6922
6916 TEST_P(ParameterizedWebFrameTest, ReloadBypassingCache) 6923 TEST_P(ParameterizedWebFrameTest, ReloadBypassingCache)
6917 { 6924 {
6918 // Check that a reload ignoring cache on a frame will result in the cache 6925 // Check that a reload ignoring cache on a frame will result in the cache
6919 // policy of the request being set to ReloadBypassingCache. 6926 // policy of the request being set to ReloadBypassingCache.
6920 registerMockedHttpURLLoad("foo.html"); 6927 registerMockedHttpURLLoad("foo.html");
6921 FrameTestHelpers::WebViewHelper webViewHelper(this); 6928 FrameTestHelpers::WebViewHelper webViewHelper;
6922 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true); 6929 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true);
6923 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6930 WebFrame* frame = webViewHelper.webView()->mainFrame();
6924 FrameTestHelpers::reloadFrameIgnoringCache(frame); 6931 FrameTestHelpers::reloadFrameIgnoringCache(frame);
6925 EXPECT_EQ(WebCachePolicy::BypassingCache, frame->dataSource()->request().get CachePolicy()); 6932 EXPECT_EQ(WebCachePolicy::BypassingCache, frame->dataSource()->request().get CachePolicy());
6926 } 6933 }
6927 6934
6928 static void nodeImageTestValidation(const IntSize& referenceBitmapSize, DragImag e* dragImage) 6935 static void nodeImageTestValidation(const IntSize& referenceBitmapSize, DragImag e* dragImage)
6929 { 6936 {
6930 // Prepare the reference bitmap. 6937 // Prepare the reference bitmap.
6931 SkBitmap bitmap; 6938 SkBitmap bitmap;
6932 bitmap.allocN32Pixels(referenceBitmapSize.width(), referenceBitmapSize.heigh t()); 6939 bitmap.allocN32Pixels(referenceBitmapSize.width(), referenceBitmapSize.heigh t());
6933 SkCanvas canvas(bitmap); 6940 SkCanvas canvas(bitmap);
6934 canvas.drawColor(SK_ColorGREEN); 6941 canvas.drawColor(SK_ColorGREEN);
6935 6942
6936 EXPECT_EQ(referenceBitmapSize.width(), dragImage->size().width()); 6943 EXPECT_EQ(referenceBitmapSize.width(), dragImage->size().width());
6937 EXPECT_EQ(referenceBitmapSize.height(), dragImage->size().height()); 6944 EXPECT_EQ(referenceBitmapSize.height(), dragImage->size().height());
6938 const SkBitmap& dragBitmap = dragImage->bitmap(); 6945 const SkBitmap& dragBitmap = dragImage->bitmap();
6939 SkAutoLockPixels lockPixel(dragBitmap); 6946 SkAutoLockPixels lockPixel(dragBitmap);
6940 EXPECT_EQ(0, memcmp(bitmap.getPixels(), dragBitmap.getPixels(), bitmap.getSi ze())); 6947 EXPECT_EQ(0, memcmp(bitmap.getPixels(), dragBitmap.getPixels(), bitmap.getSi ze()));
6941 } 6948 }
6942 6949
6943 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSSTransformDescendant) 6950 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSSTransformDescendant)
6944 { 6951 {
6945 FrameTestHelpers::WebViewHelper webViewHelper(this); 6952 FrameTestHelpers::WebViewHelper webViewHelper;
6946 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-css-3dtransform-descendant")); 6953 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-css-3dtransform-descendant"));
6947 EXPECT_TRUE(dragImage); 6954 EXPECT_TRUE(dragImage);
6948 6955
6949 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6956 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6950 } 6957 }
6951 6958
6952 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSSTransform) 6959 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSSTransform)
6953 { 6960 {
6954 FrameTestHelpers::WebViewHelper webViewHelper(this); 6961 FrameTestHelpers::WebViewHelper webViewHelper;
6955 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-css-transform")); 6962 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-css-transform"));
6956 EXPECT_TRUE(dragImage); 6963 EXPECT_TRUE(dragImage);
6957 6964
6958 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6965 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6959 } 6966 }
6960 6967
6961 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSS3DTransform) 6968 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSS3DTransform)
6962 { 6969 {
6963 FrameTestHelpers::WebViewHelper webViewHelper(this); 6970 FrameTestHelpers::WebViewHelper webViewHelper;
6964 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-css-3dtransform")); 6971 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-css-3dtransform"));
6965 EXPECT_TRUE(dragImage); 6972 EXPECT_TRUE(dragImage);
6966 6973
6967 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6974 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6968 } 6975 }
6969 6976
6970 TEST_P(ParameterizedWebFrameTest, NodeImageTestInlineBlock) 6977 TEST_P(ParameterizedWebFrameTest, NodeImageTestInlineBlock)
6971 { 6978 {
6972 FrameTestHelpers::WebViewHelper webViewHelper(this); 6979 FrameTestHelpers::WebViewHelper webViewHelper;
6973 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-inlineblock")); 6980 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-inlineblock"));
6974 EXPECT_TRUE(dragImage); 6981 EXPECT_TRUE(dragImage);
6975 6982
6976 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6983 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6977 } 6984 }
6978 6985
6979 TEST_P(ParameterizedWebFrameTest, NodeImageTestFloatLeft) 6986 TEST_P(ParameterizedWebFrameTest, NodeImageTestFloatLeft)
6980 { 6987 {
6981 FrameTestHelpers::WebViewHelper webViewHelper(this); 6988 FrameTestHelpers::WebViewHelper webViewHelper;
6982 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-float-left-overflow-hidden")); 6989 std::unique_ptr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, st d::string("case-float-left-overflow-hidden"));
6983 EXPECT_TRUE(dragImage); 6990 EXPECT_TRUE(dragImage);
6984 6991
6985 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6992 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6986 } 6993 }
6987 6994
6988 // Crashes on Android: http://crbug.com/403804 6995 // Crashes on Android: http://crbug.com/403804
6989 #if OS(ANDROID) 6996 #if OS(ANDROID)
6990 TEST_P(ParameterizedWebFrameTest, DISABLED_PrintingBasic) 6997 TEST_P(ParameterizedWebFrameTest, DISABLED_PrintingBasic)
6991 #else 6998 #else
6992 TEST_P(ParameterizedWebFrameTest, PrintingBasic) 6999 TEST_P(ParameterizedWebFrameTest, PrintingBasic)
6993 #endif 7000 #endif
6994 { 7001 {
6995 FrameTestHelpers::WebViewHelper webViewHelper(this); 7002 FrameTestHelpers::WebViewHelper webViewHelper;
6996 webViewHelper.initializeAndLoad("data:text/html,Hello, world."); 7003 webViewHelper.initializeAndLoad("data:text/html,Hello, world.");
6997 7004
6998 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7005 WebFrame* frame = webViewHelper.webView()->mainFrame();
6999 7006
7000 WebPrintParams printParams; 7007 WebPrintParams printParams;
7001 printParams.printContentArea.width = 500; 7008 printParams.printContentArea.width = 500;
7002 printParams.printContentArea.height = 500; 7009 printParams.printContentArea.height = 500;
7003 7010
7004 int pageCount = frame->printBegin(printParams); 7011 int pageCount = frame->printBegin(printParams);
7005 EXPECT_EQ(1, pageCount); 7012 EXPECT_EQ(1, pageCount);
(...skipping 22 matching lines...) Expand all
7028 { 7035 {
7029 m_didNotify = true; 7036 m_didNotify = true;
7030 } 7037 }
7031 7038
7032 bool m_didNotify; 7039 bool m_didNotify;
7033 }; 7040 };
7034 7041
7035 TEST_P(ParameterizedWebFrameTest, ThemeColor) 7042 TEST_P(ParameterizedWebFrameTest, ThemeColor)
7036 { 7043 {
7037 registerMockedHttpURLLoad("theme_color_test.html"); 7044 registerMockedHttpURLLoad("theme_color_test.html");
7038 FrameTestHelpers::WebViewHelper webViewHelper(this); 7045 FrameTestHelpers::WebViewHelper webViewHelper;
7039 ThemeColorTestWebFrameClient client; 7046 ThemeColorTestWebFrameClient client;
7040 webViewHelper.initializeAndLoad(m_baseURL + "theme_color_test.html", true, & client); 7047 webViewHelper.initializeAndLoad(m_baseURL + "theme_color_test.html", true, & client);
7041 EXPECT_TRUE(client.didNotify()); 7048 EXPECT_TRUE(client.didNotify());
7042 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 7049 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
7043 EXPECT_EQ(0xff0000ff, frame->document().themeColor()); 7050 EXPECT_EQ(0xff0000ff, frame->document().themeColor());
7044 // Change color by rgb. 7051 // Change color by rgb.
7045 client.reset(); 7052 client.reset();
7046 frame->executeScript(WebScriptSource("document.getElementById('tc1').setAttr ibute('content', 'rgb(0, 0, 0)');")); 7053 frame->executeScript(WebScriptSource("document.getElementById('tc1').setAttr ibute('content', 'rgb(0, 0, 0)');"));
7047 EXPECT_TRUE(client.didNotify()); 7054 EXPECT_TRUE(client.didNotify());
7048 EXPECT_EQ(0xff000000, frame->document().themeColor()); 7055 EXPECT_EQ(0xff000000, frame->document().themeColor());
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after
7861 bool failed() { return m_failed; } 7868 bool failed() { return m_failed; }
7862 7869
7863 bool m_failed; 7870 bool m_failed;
7864 }; 7871 };
7865 7872
7866 // FIXME: This would be better as a unittest on DocumentThreadableLoader but it 7873 // FIXME: This would be better as a unittest on DocumentThreadableLoader but it
7867 // requires spin-up of a frame. It may be possible to remove that requirement 7874 // requires spin-up of a frame. It may be possible to remove that requirement
7868 // and convert it to a unittest. 7875 // and convert it to a unittest.
7869 TEST_P(ParameterizedWebFrameTest, LoaderOriginAccess) 7876 TEST_P(ParameterizedWebFrameTest, LoaderOriginAccess)
7870 { 7877 {
7871 FrameTestHelpers::WebViewHelper webViewHelper(this); 7878 FrameTestHelpers::WebViewHelper webViewHelper;
7872 webViewHelper.initializeAndLoad("about:blank"); 7879 webViewHelper.initializeAndLoad("about:blank");
7873 7880
7874 SchemeRegistry::registerURLSchemeAsDisplayIsolated("chrome"); 7881 SchemeRegistry::registerURLSchemeAsDisplayIsolated("chrome");
7875 7882
7876 // Cross-origin request. 7883 // Cross-origin request.
7877 KURL resourceUrl(ParsedURLString, "chrome://test.pdf"); 7884 KURL resourceUrl(ParsedURLString, "chrome://test.pdf");
7878 ResourceRequest request(resourceUrl); 7885 ResourceRequest request(resourceUrl);
7879 request.setRequestContext(WebURLRequest::RequestContextObject); 7886 request.setRequestContext(WebURLRequest::RequestContextObject);
7880 registerMockedChromeURLLoad("test.pdf"); 7887 registerMockedChromeURLLoad("test.pdf");
7881 7888
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
7920 } 7927 }
7921 7928
7922 Vector<WebConsoleMessage> messages; 7929 Vector<WebConsoleMessage> messages;
7923 }; 7930 };
7924 7931
7925 TEST_P(ParameterizedWebFrameTest, CrossDomainAccessErrorsUseCallingWindow) 7932 TEST_P(ParameterizedWebFrameTest, CrossDomainAccessErrorsUseCallingWindow)
7926 { 7933 {
7927 registerMockedHttpURLLoad("hidden_frames.html"); 7934 registerMockedHttpURLLoad("hidden_frames.html");
7928 registerMockedChromeURLLoad("hello_world.html"); 7935 registerMockedChromeURLLoad("hello_world.html");
7929 7936
7930 FrameTestHelpers::WebViewHelper webViewHelper(this); 7937 FrameTestHelpers::WebViewHelper webViewHelper;
7931 TestConsoleMessageWebFrameClient webFrameClient; 7938 TestConsoleMessageWebFrameClient webFrameClient;
7932 FrameTestHelpers::TestWebViewClient webViewClient; 7939 FrameTestHelpers::TestWebViewClient webViewClient;
7933 webViewHelper.initializeAndLoad(m_baseURL + "hidden_frames.html", true, &web FrameClient, &webViewClient); 7940 webViewHelper.initializeAndLoad(m_baseURL + "hidden_frames.html", true, &web FrameClient, &webViewClient);
7934 7941
7935 // Create another window with a cross-origin page, and point its opener to 7942 // Create another window with a cross-origin page, and point its opener to
7936 // first window. 7943 // first window.
7937 FrameTestHelpers::WebViewHelper popupWebViewHelper(this); 7944 FrameTestHelpers::WebViewHelper popupWebViewHelper;
7938 TestConsoleMessageWebFrameClient popupWebFrameClient; 7945 TestConsoleMessageWebFrameClient popupWebFrameClient;
7939 WebView* popupView = popupWebViewHelper.initializeAndLoad(m_chromeURL + "hel lo_world.html", true, &popupWebFrameClient); 7946 WebView* popupView = popupWebViewHelper.initializeAndLoad(m_chromeURL + "hel lo_world.html", true, &popupWebFrameClient);
7940 popupView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame()); 7947 popupView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame());
7941 7948
7942 // Attempt a blocked navigation of an opener's subframe, and ensure that 7949 // Attempt a blocked navigation of an opener's subframe, and ensure that
7943 // the error shows up on the popup (calling) window's console, rather than 7950 // the error shows up on the popup (calling) window's console, rather than
7944 // the target window. 7951 // the target window.
7945 popupView->mainFrame()->executeScript(WebScriptSource("opener.frames[1].loca tion.href='data:text/html,foo'")); 7952 popupView->mainFrame()->executeScript(WebScriptSource("opener.frames[1].loca tion.href='data:text/html,foo'"));
7946 EXPECT_TRUE(webFrameClient.messages.isEmpty()); 7953 EXPECT_TRUE(webFrameClient.messages.isEmpty());
7947 ASSERT_EQ(1u, popupWebFrameClient.messages.size()); 7954 ASSERT_EQ(1u, popupWebFrameClient.messages.size());
7948 EXPECT_TRUE(std::string::npos != popupWebFrameClient.messages[0].text.utf8() .find("Unsafe JavaScript attempt to initiate navigation")); 7955 EXPECT_TRUE(std::string::npos != popupWebFrameClient.messages[0].text.utf8() .find("Unsafe JavaScript attempt to initiate navigation"));
7949 7956
7950 // Try setting a cross-origin iframe element's source to a javascript: URL, 7957 // Try setting a cross-origin iframe element's source to a javascript: URL,
7951 // and check that this error is also printed on the calling window. 7958 // and check that this error is also printed on the calling window.
7952 popupView->mainFrame()->executeScript(WebScriptSource("opener.document.query SelectorAll('iframe')[1].src='javascript:alert()'")); 7959 popupView->mainFrame()->executeScript(WebScriptSource("opener.document.query SelectorAll('iframe')[1].src='javascript:alert()'"));
7953 EXPECT_TRUE(webFrameClient.messages.isEmpty()); 7960 EXPECT_TRUE(webFrameClient.messages.isEmpty());
7954 ASSERT_EQ(2u, popupWebFrameClient.messages.size()); 7961 ASSERT_EQ(2u, popupWebFrameClient.messages.size());
7955 EXPECT_TRUE(std::string::npos != popupWebFrameClient.messages[1].text.utf8() .find("Blocked a frame")); 7962 EXPECT_TRUE(std::string::npos != popupWebFrameClient.messages[1].text.utf8() .find("Blocked a frame"));
7956 7963
7957 // Manually reset to break WebViewHelpers' dependencies on the stack 7964 // Manually reset to break WebViewHelpers' dependencies on the stack
7958 // allocated WebFrameClients. 7965 // allocated WebFrameClients.
7959 webViewHelper.reset(); 7966 webViewHelper.reset();
7960 popupWebViewHelper.reset(); 7967 popupWebViewHelper.reset();
7961 } 7968 }
7962 7969
7963 class DeviceEmulationTest : public ParameterizedWebFrameTest { 7970 class DeviceEmulationTest : public ParameterizedWebFrameTest {
7964 protected: 7971 protected:
7965 DeviceEmulationTest() 7972 DeviceEmulationTest()
7966 : m_webViewHelper(this)
7967 { 7973 {
7968 registerMockedHttpURLLoad("device_emulation.html"); 7974 registerMockedHttpURLLoad("device_emulation.html");
7969 m_client.m_screenInfo.deviceScaleFactor = 1; 7975 m_client.m_screenInfo.deviceScaleFactor = 1;
7970 m_webViewHelper.initializeAndLoad(m_baseURL + "device_emulation.html", t rue, 0, &m_client); 7976 m_webViewHelper.initializeAndLoad(m_baseURL + "device_emulation.html", t rue, 0, &m_client);
7971 } 7977 }
7972 7978
7973 void testResize(const WebSize size, const String& expectedSize) 7979 void testResize(const WebSize size, const String& expectedSize)
7974 { 7980 {
7975 m_client.m_screenInfo.rect = WebRect(0, 0, size.width, size.height); 7981 m_client.m_screenInfo.rect = WebRect(0, 0, size.width, size.height);
7976 m_client.m_screenInfo.availableRect = m_client.m_screenInfo.rect; 7982 m_client.m_screenInfo.availableRect = m_client.m_screenInfo.rect;
7977 m_webViewHelper.resize(size); 7983 m_webViewHelper.resize(size);
7978 EXPECT_EQ(expectedSize, dumpSize("test")); 7984 EXPECT_EQ(expectedSize, dumpSize("test"));
7979 } 7985 }
7980 7986
7981 String dumpSize(const String& id) 7987 String dumpSize(const String& id)
7982 { 7988 {
7983 String code = "dumpSize('" + id + "')"; 7989 String code = "dumpSize('" + id + "')";
7984 v8::HandleScope scope(v8::Isolate::GetCurrent()); 7990 v8::HandleScope scope(v8::Isolate::GetCurrent());
7985 ScriptExecutionCallbackHelper callbackHelper(m_webViewHelper.webView()-> mainFrame()->mainWorldScriptContext()); 7991 ScriptExecutionCallbackHelper callbackHelper(m_webViewHelper.webView()-> mainFrame()->mainWorldScriptContext());
7986 m_webViewHelper.webView()->mainFrameImpl()->requestExecuteScriptAndRetur nValue(WebScriptSource(WebString(code)), false, &callbackHelper); 7992 m_webViewHelper.webView()->mainFrameImpl()->requestExecuteScriptAndRetur nValue(WebScriptSource(WebString(code)), false, &callbackHelper);
7987 runPendingTasks(); 7993 runPendingTasks();
7988 EXPECT_TRUE(callbackHelper.didComplete()); 7994 EXPECT_TRUE(callbackHelper.didComplete());
7989 return callbackHelper.stringValue(); 7995 return callbackHelper.stringValue();
7990 } 7996 }
7991 7997
7992 FixedLayoutTestWebViewClient m_client; 7998 FixedLayoutTestWebViewClient m_client;
7993 FrameTestHelpers::WebViewHelper m_webViewHelper; 7999 FrameTestHelpers::WebViewHelper m_webViewHelper;
7994 }; 8000 };
7995 8001
7996 INSTANTIATE_TEST_CASE_P(All, DeviceEmulationTest, ::testing::Values( 8002 INSTANTIATE_TEST_CASE_P(All, DeviceEmulationTest, ::testing::Bool());
7997 FrameTestHelpers::DefaultSettingOverride,
7998 FrameTestHelpers::RootLayerScrollsSettingOverride));
7999 8003
8000 TEST_P(DeviceEmulationTest, DeviceSizeInvalidatedOnResize) 8004 TEST_P(DeviceEmulationTest, DeviceSizeInvalidatedOnResize)
8001 { 8005 {
8002 WebDeviceEmulationParams params; 8006 WebDeviceEmulationParams params;
8003 params.screenPosition = WebDeviceEmulationParams::Mobile; 8007 params.screenPosition = WebDeviceEmulationParams::Mobile;
8004 m_webViewHelper.webView()->enableDeviceEmulation(params); 8008 m_webViewHelper.webView()->enableDeviceEmulation(params);
8005 8009
8006 testResize(WebSize(700, 500), "300x300"); 8010 testResize(WebSize(700, 500), "300x300");
8007 testResize(WebSize(710, 500), "400x300"); 8011 testResize(WebSize(710, 500), "400x300");
8008 testResize(WebSize(690, 500), "200x300"); 8012 testResize(WebSize(690, 500), "200x300");
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
8825 request.setRequestorOrigin(WebSecurityOrigin::createUnique()); 8829 request.setRequestorOrigin(WebSecurityOrigin::createUnique());
8826 helper.webView()->mainFrameImpl()->loadRequest(request); 8830 helper.webView()->mainFrameImpl()->loadRequest(request);
8827 8831
8828 // Normally, the result of the JS url replaces the existing contents on the 8832 // Normally, the result of the JS url replaces the existing contents on the
8829 // Document. However, if the JS triggers a navigation, the contents should 8833 // Document. However, if the JS triggers a navigation, the contents should
8830 // not be replaced. 8834 // not be replaced.
8831 EXPECT_EQ("", toLocalFrame(helper.webView()->page()->mainFrame())->document( )->documentElement()->innerText()); 8835 EXPECT_EQ("", toLocalFrame(helper.webView()->page()->mainFrame())->document( )->documentElement()->innerText());
8832 } 8836 }
8833 8837
8834 } // namespace blink 8838 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698