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

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

Issue 1153913007: WebFrameTest: rename Parametrized -> Parameterized. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 ASSERT(frame); 235 ASSERT(frame);
236 Element* element = frame->document()->getElementById(testcase.c_str()); 236 Element* element = frame->document()->getElementById(testcase.c_str());
237 return frame->nodeImage(*element); 237 return frame->nodeImage(*element);
238 } 238 }
239 239
240 std::string m_baseURL; 240 std::string m_baseURL;
241 std::string m_notBaseURL; 241 std::string m_notBaseURL;
242 std::string m_chromeURL; 242 std::string m_chromeURL;
243 }; 243 };
244 244
245 enum ParametrizedWebFrameTestConfig { 245 enum ParameterizedWebFrameTestConfig {
246 Default, 246 Default,
247 RootLayerScrolls 247 RootLayerScrolls
248 }; 248 };
249 249
250 class ParametrizedWebFrameTest 250 class ParameterizedWebFrameTest
251 : public WebFrameTest 251 : public WebFrameTest
252 , public ::testing::WithParamInterface<ParametrizedWebFrameTestConfig> 252 , public ::testing::WithParamInterface<ParameterizedWebFrameTestConfig>
253 , public FrameTestHelpers::SettingOverrider { 253 , public FrameTestHelpers::SettingOverrider {
254 public: 254 public:
255 255
256 virtual void overrideSettings(WebSettings* settings) 256 virtual void overrideSettings(WebSettings* settings)
257 { 257 {
258 switch (GetParam()) { 258 switch (GetParam()) {
259 case Default: 259 case Default:
260 break; 260 break;
261 case RootLayerScrolls: 261 case RootLayerScrolls:
262 settings->setRootLayerScrolls(true); 262 settings->setRootLayerScrolls(true);
263 break; 263 break;
264 } 264 }
265 } 265 }
266 }; 266 };
267 267
268 // Friendly string for gtest failure messages. 268 // Friendly string for gtest failure messages.
269 void PrintTo(ParametrizedWebFrameTestConfig config, ::std::ostream* os) 269 void PrintTo(ParameterizedWebFrameTestConfig config, ::std::ostream* os)
270 { 270 {
271 switch (config) { 271 switch (config) {
272 case Default: 272 case Default:
273 *os << "Default"; 273 *os << "Default";
274 break; 274 break;
275 case RootLayerScrolls: 275 case RootLayerScrolls:
276 *os << "RootLayerScrolls"; 276 *os << "RootLayerScrolls";
277 break; 277 break;
278 } 278 }
279 } 279 }
280 280
281 INSTANTIATE_TEST_CASE_P(All, ParametrizedWebFrameTest, ::testing::Values( 281 INSTANTIATE_TEST_CASE_P(All, ParameterizedWebFrameTest, ::testing::Values(
282 ParametrizedWebFrameTestConfig::Default, 282 ParameterizedWebFrameTestConfig::Default,
283 ParametrizedWebFrameTestConfig::RootLayerScrolls)); 283 ParameterizedWebFrameTestConfig::RootLayerScrolls));
284 284
285 TEST_P(ParametrizedWebFrameTest, ContentText) 285 TEST_P(ParameterizedWebFrameTest, ContentText)
286 { 286 {
287 registerMockedHttpURLLoad("iframes_test.html"); 287 registerMockedHttpURLLoad("iframes_test.html");
288 registerMockedHttpURLLoad("visible_iframe.html"); 288 registerMockedHttpURLLoad("visible_iframe.html");
289 registerMockedHttpURLLoad("invisible_iframe.html"); 289 registerMockedHttpURLLoad("invisible_iframe.html");
290 registerMockedHttpURLLoad("zero_sized_iframe.html"); 290 registerMockedHttpURLLoad("zero_sized_iframe.html");
291 291
292 FrameTestHelpers::WebViewHelper webViewHelper(this); 292 FrameTestHelpers::WebViewHelper webViewHelper(this);
293 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html"); 293 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html");
294 294
295 // Now retrieve the frames text and test it only includes visible elements. 295 // Now retrieve the frames text and test it only includes visible elements.
296 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8(); 296 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8();
297 EXPECT_NE(std::string::npos, content.find(" visible paragraph")); 297 EXPECT_NE(std::string::npos, content.find(" visible paragraph"));
298 EXPECT_NE(std::string::npos, content.find(" visible iframe")); 298 EXPECT_NE(std::string::npos, content.find(" visible iframe"));
299 EXPECT_EQ(std::string::npos, content.find(" invisible pararaph")); 299 EXPECT_EQ(std::string::npos, content.find(" invisible pararaph"));
300 EXPECT_EQ(std::string::npos, content.find(" invisible iframe")); 300 EXPECT_EQ(std::string::npos, content.find(" invisible iframe"));
301 EXPECT_EQ(std::string::npos, content.find("iframe with zero size")); 301 EXPECT_EQ(std::string::npos, content.find("iframe with zero size"));
302 } 302 }
303 303
304 TEST_P(ParametrizedWebFrameTest, FrameForEnteredContext) 304 TEST_P(ParameterizedWebFrameTest, FrameForEnteredContext)
305 { 305 {
306 registerMockedHttpURLLoad("iframes_test.html"); 306 registerMockedHttpURLLoad("iframes_test.html");
307 registerMockedHttpURLLoad("visible_iframe.html"); 307 registerMockedHttpURLLoad("visible_iframe.html");
308 registerMockedHttpURLLoad("invisible_iframe.html"); 308 registerMockedHttpURLLoad("invisible_iframe.html");
309 registerMockedHttpURLLoad("zero_sized_iframe.html"); 309 registerMockedHttpURLLoad("zero_sized_iframe.html");
310 310
311 FrameTestHelpers::WebViewHelper webViewHelper(this); 311 FrameTestHelpers::WebViewHelper webViewHelper(this);
312 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html", true); 312 webViewHelper.initializeAndLoad(m_baseURL + "iframes_test.html", true);
313 313
314 v8::HandleScope scope(v8::Isolate::GetCurrent()); 314 v8::HandleScope scope(v8::Isolate::GetCurrent());
315 EXPECT_EQ(webViewHelper.webView()->mainFrame(), WebLocalFrame::frameForConte xt(webViewHelper.webView()->mainFrame()->mainWorldScriptContext())); 315 EXPECT_EQ(webViewHelper.webView()->mainFrame(), WebLocalFrame::frameForConte xt(webViewHelper.webView()->mainFrame()->mainWorldScriptContext()));
316 EXPECT_EQ(webViewHelper.webView()->mainFrame()->firstChild(), WebLocalFrame: :frameForContext(webViewHelper.webView()->mainFrame()->firstChild()->mainWorldSc riptContext())); 316 EXPECT_EQ(webViewHelper.webView()->mainFrame()->firstChild(), WebLocalFrame: :frameForContext(webViewHelper.webView()->mainFrame()->firstChild()->mainWorldSc riptContext()));
317 } 317 }
318 318
319 TEST_P(ParametrizedWebFrameTest, FormWithNullFrame) 319 TEST_P(ParameterizedWebFrameTest, FormWithNullFrame)
320 { 320 {
321 registerMockedHttpURLLoad("form.html"); 321 registerMockedHttpURLLoad("form.html");
322 322
323 FrameTestHelpers::WebViewHelper webViewHelper(this); 323 FrameTestHelpers::WebViewHelper webViewHelper(this);
324 webViewHelper.initializeAndLoad(m_baseURL + "form.html"); 324 webViewHelper.initializeAndLoad(m_baseURL + "form.html");
325 325
326 WebVector<WebFormElement> forms; 326 WebVector<WebFormElement> forms;
327 webViewHelper.webView()->mainFrame()->document().forms(forms); 327 webViewHelper.webView()->mainFrame()->document().forms(forms);
328 webViewHelper.reset(); 328 webViewHelper.reset();
329 329
330 EXPECT_EQ(forms.size(), 1U); 330 EXPECT_EQ(forms.size(), 1U);
331 331
332 // This test passes if this doesn't crash. 332 // This test passes if this doesn't crash.
333 WebSearchableFormData searchableDataForm(forms[0]); 333 WebSearchableFormData searchableDataForm(forms[0]);
334 } 334 }
335 335
336 TEST_P(ParametrizedWebFrameTest, ChromePageJavascript) 336 TEST_P(ParameterizedWebFrameTest, ChromePageJavascript)
337 { 337 {
338 registerMockedChromeURLLoad("history.html"); 338 registerMockedChromeURLLoad("history.html");
339 339
340 // Pass true to enable JavaScript. 340 // Pass true to enable JavaScript.
341 FrameTestHelpers::WebViewHelper webViewHelper(this); 341 FrameTestHelpers::WebViewHelper webViewHelper(this);
342 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true); 342 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true);
343 343
344 // Try to run JS against the chrome-style URL. 344 // Try to run JS against the chrome-style URL.
345 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))"); 345 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))");
346 346
347 // Required to see any updates in contentAsText. 347 // Required to see any updates in contentAsText.
348 webViewHelper.webView()->layout(); 348 webViewHelper.webView()->layout();
349 349
350 // Now retrieve the frame's text and ensure it was modified by running javas cript. 350 // Now retrieve the frame's text and ensure it was modified by running javas cript.
351 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8(); 351 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8();
352 EXPECT_NE(std::string::npos, content.find("Clobbered")); 352 EXPECT_NE(std::string::npos, content.find("Clobbered"));
353 } 353 }
354 354
355 TEST_P(ParametrizedWebFrameTest, ChromePageNoJavascript) 355 TEST_P(ParameterizedWebFrameTest, ChromePageNoJavascript)
356 { 356 {
357 registerMockedChromeURLLoad("history.html"); 357 registerMockedChromeURLLoad("history.html");
358 358
359 /// Pass true to enable JavaScript. 359 /// Pass true to enable JavaScript.
360 FrameTestHelpers::WebViewHelper webViewHelper(this); 360 FrameTestHelpers::WebViewHelper webViewHelper(this);
361 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true); 361 webViewHelper.initializeAndLoad(m_chromeURL + "history.html", true);
362 362
363 // Try to run JS against the chrome-style URL after prohibiting it. 363 // Try to run JS against the chrome-style URL after prohibiting it.
364 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs("chrome"); 364 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs("chrome");
365 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))"); 365 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Clobbered'))");
366 366
367 // Required to see any updates in contentAsText. 367 // Required to see any updates in contentAsText.
368 webViewHelper.webView()->layout(); 368 webViewHelper.webView()->layout();
369 369
370 // Now retrieve the frame's text and ensure it wasn't modified by running ja vascript. 370 // Now retrieve the frame's text and ensure it wasn't modified by running ja vascript.
371 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8(); 371 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8();
372 EXPECT_EQ(std::string::npos, content.find("Clobbered")); 372 EXPECT_EQ(std::string::npos, content.find("Clobbered"));
373 } 373 }
374 374
375 TEST_P(ParametrizedWebFrameTest, LocationSetHostWithMissingPort) 375 TEST_P(ParameterizedWebFrameTest, LocationSetHostWithMissingPort)
376 { 376 {
377 std::string fileName = "print-location-href.html"; 377 std::string fileName = "print-location-href.html";
378 registerMockedHttpURLLoad(fileName); 378 registerMockedHttpURLLoad(fileName);
379 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName)); 379 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName));
380 380
381 FrameTestHelpers::WebViewHelper webViewHelper(this); 381 FrameTestHelpers::WebViewHelper webViewHelper(this);
382 382
383 /// Pass true to enable JavaScript. 383 /// Pass true to enable JavaScript.
384 webViewHelper.initializeAndLoad(m_baseURL + fileName, true); 384 webViewHelper.initializeAndLoad(m_baseURL + fileName, true);
385 385
386 // Setting host to "hostname:" should be treated as "hostname:0". 386 // Setting host to "hostname:" should be treated as "hostname:0".
387 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:location.host = 'internal.test:'; void 0;"); 387 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:location.host = 'internal.test:'; void 0;");
388 388
389 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.textContent = location.href; void 0;"); 389 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.textContent = location.href; void 0;");
390 390
391 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8(); 391 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8();
392 EXPECT_EQ("http://internal.test:0/" + fileName, content); 392 EXPECT_EQ("http://internal.test:0/" + fileName, content);
393 } 393 }
394 394
395 TEST_P(ParametrizedWebFrameTest, LocationSetEmptyPort) 395 TEST_P(ParameterizedWebFrameTest, LocationSetEmptyPort)
396 { 396 {
397 std::string fileName = "print-location-href.html"; 397 std::string fileName = "print-location-href.html";
398 registerMockedHttpURLLoad(fileName); 398 registerMockedHttpURLLoad(fileName);
399 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName)); 399 URLTestHelpers::registerMockedURLLoad(toKURL("http://internal.test:0/" + fil eName), WebString::fromUTF8(fileName));
400 400
401 FrameTestHelpers::WebViewHelper webViewHelper(this); 401 FrameTestHelpers::WebViewHelper webViewHelper(this);
402 402
403 /// Pass true to enable JavaScript. 403 /// Pass true to enable JavaScript.
404 webViewHelper.initializeAndLoad(m_baseURL + fileName, true); 404 webViewHelper.initializeAndLoad(m_baseURL + fileName, true);
405 405
(...skipping 16 matching lines...) Expand all
422 m_executing = true; 422 m_executing = true;
423 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 423 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
424 frame->executeScriptAndReturnValue(WebScriptSource(WebString("window.som eProperty = 42;"))); 424 frame->executeScriptAndReturnValue(WebScriptSource(WebString("window.som eProperty = 42;")));
425 m_executing = false; 425 m_executing = false;
426 } 426 }
427 427
428 bool m_executing; 428 bool m_executing;
429 bool m_wasExecuted; 429 bool m_wasExecuted;
430 }; 430 };
431 431
432 TEST_P(ParametrizedWebFrameTest, DidClearWindowObjectIsNotRecursive) 432 TEST_P(ParameterizedWebFrameTest, DidClearWindowObjectIsNotRecursive)
433 { 433 {
434 EvaluateOnLoadWebFrameClient webFrameClient; 434 EvaluateOnLoadWebFrameClient webFrameClient;
435 FrameTestHelpers::WebViewHelper webViewHelper(this); 435 FrameTestHelpers::WebViewHelper webViewHelper(this);
436 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient); 436 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient);
437 EXPECT_TRUE(webFrameClient.m_wasExecuted); 437 EXPECT_TRUE(webFrameClient.m_wasExecuted);
438 } 438 }
439 439
440 class CSSCallbackWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 440 class CSSCallbackWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
441 public: 441 public:
442 CSSCallbackWebFrameClient() : m_updateCount(0) { } 442 CSSCallbackWebFrameClient() : m_updateCount(0) { }
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 selectors.push_back(WebString::fromUTF8("p span")); // Not compound. 697 selectors.push_back(WebString::fromUTF8("p span")); // Not compound.
698 doc().watchCSSSelectors(WebVector<WebString>(selectors)); 698 doc().watchCSSSelectors(WebVector<WebString>(selectors));
699 m_frame->view()->layout(); 699 m_frame->view()->layout();
700 runPendingTasks(); 700 runPendingTasks();
701 701
702 EXPECT_EQ(1, updateCount()); 702 EXPECT_EQ(1, updateCount());
703 EXPECT_THAT(matchedSelectors(), ElementsAre("span")) 703 EXPECT_THAT(matchedSelectors(), ElementsAre("span"))
704 << "An invalid selector shouldn't prevent other selectors from matching. "; 704 << "An invalid selector shouldn't prevent other selectors from matching. ";
705 } 705 }
706 706
707 TEST_P(ParametrizedWebFrameTest, DispatchMessageEventWithOriginCheck) 707 TEST_P(ParameterizedWebFrameTest, DispatchMessageEventWithOriginCheck)
708 { 708 {
709 registerMockedHttpURLLoad("postmessage_test.html"); 709 registerMockedHttpURLLoad("postmessage_test.html");
710 710
711 // Pass true to enable JavaScript. 711 // Pass true to enable JavaScript.
712 FrameTestHelpers::WebViewHelper webViewHelper(this); 712 FrameTestHelpers::WebViewHelper webViewHelper(this);
713 webViewHelper.initializeAndLoad(m_baseURL + "postmessage_test.html", true); 713 webViewHelper.initializeAndLoad(m_baseURL + "postmessage_test.html", true);
714 714
715 // Send a message with the correct origin. 715 // Send a message with the correct origin.
716 WebSecurityOrigin correctOrigin(WebSecurityOrigin::create(toKURL(m_baseURL)) ); 716 WebSecurityOrigin correctOrigin(WebSecurityOrigin::create(toKURL(m_baseURL)) );
717 WebDOMEvent event = webViewHelper.webView()->mainFrame()->document().createE vent("MessageEvent"); 717 WebDOMEvent event = webViewHelper.webView()->mainFrame()->document().createE vent("MessageEvent");
718 WebDOMMessageEvent message = event.to<WebDOMMessageEvent>(); 718 WebDOMMessageEvent message = event.to<WebDOMMessageEvent>();
719 WebSerializedScriptValue data(WebSerializedScriptValue::fromString("foo")); 719 WebSerializedScriptValue data(WebSerializedScriptValue::fromString("foo"));
720 message.initMessageEvent("message", false, false, data, "http://origin.com", 0, ""); 720 message.initMessageEvent("message", false, false, data, "http://origin.com", 0, "");
721 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(co rrectOrigin, message); 721 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(co rrectOrigin, message);
722 722
723 // Send another message with incorrect origin. 723 // Send another message with incorrect origin.
724 WebSecurityOrigin incorrectOrigin(WebSecurityOrigin::create(toKURL(m_chromeU RL))); 724 WebSecurityOrigin incorrectOrigin(WebSecurityOrigin::create(toKURL(m_chromeU RL)));
725 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(in correctOrigin, message); 725 webViewHelper.webView()->mainFrame()->dispatchMessageEventWithOriginCheck(in correctOrigin, message);
726 726
727 // Required to see any updates in contentAsText. 727 // Required to see any updates in contentAsText.
728 webViewHelper.webView()->layout(); 728 webViewHelper.webView()->layout();
729 729
730 // Verify that only the first addition is in the body of the page. 730 // Verify that only the first addition is in the body of the page.
731 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8(); 731 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10 24).utf8();
732 EXPECT_NE(std::string::npos, content.find("Message 1.")); 732 EXPECT_NE(std::string::npos, content.find("Message 1."));
733 EXPECT_EQ(std::string::npos, content.find("Message 2.")); 733 EXPECT_EQ(std::string::npos, content.find("Message 2."));
734 } 734 }
735 735
736 TEST_P(ParametrizedWebFrameTest, PostMessageThenDetach) 736 TEST_P(ParameterizedWebFrameTest, PostMessageThenDetach)
737 { 737 {
738 FrameTestHelpers::WebViewHelper webViewHelper(this); 738 FrameTestHelpers::WebViewHelper webViewHelper(this);
739 webViewHelper.initializeAndLoad("about:blank"); 739 webViewHelper.initializeAndLoad("about:blank");
740 740
741 RefPtrWillBeRawPtr<LocalFrame> frame = toLocalFrame(webViewHelper.webViewImp l()->page()->mainFrame()); 741 RefPtrWillBeRawPtr<LocalFrame> frame = toLocalFrame(webViewHelper.webViewImp l()->page()->mainFrame());
742 NonThrowableExceptionState exceptionState; 742 NonThrowableExceptionState exceptionState;
743 frame->domWindow()->postMessage(SerializedScriptValueFactory::instance().cre ate("message"), 0, "*", frame->localDOMWindow(), exceptionState); 743 frame->domWindow()->postMessage(SerializedScriptValueFactory::instance().cre ate("message"), 0, "*", frame->localDOMWindow(), exceptionState);
744 webViewHelper.reset(); 744 webViewHelper.reset();
745 EXPECT_FALSE(exceptionState.hadException()); 745 EXPECT_FALSE(exceptionState.hadException());
746 746
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 bool multiplierChecked = false; 788 bool multiplierChecked = false;
789 for (LayoutObject* layoutObject = document->layoutView(); layoutObject; layo utObject = layoutObject->nextInPreOrder()) { 789 for (LayoutObject* layoutObject = document->layoutView(); layoutObject; layo utObject = layoutObject->nextInPreOrder()) {
790 if (layoutObject->style() && layoutObject->isText()) { 790 if (layoutObject->style() && layoutObject->isText()) {
791 EXPECT_EQ(multiplier, layoutObject->style()->textAutosizingMultiplie r()); 791 EXPECT_EQ(multiplier, layoutObject->style()->textAutosizingMultiplie r());
792 multiplierChecked = true; 792 multiplierChecked = true;
793 } 793 }
794 } 794 }
795 return multiplierChecked; 795 return multiplierChecked;
796 } 796 }
797 797
798 TEST_P(ParametrizedWebFrameTest, ChangeInFixedLayoutResetsTextAutosizingMultipli ers) 798 TEST_P(ParameterizedWebFrameTest, ChangeInFixedLayoutResetsTextAutosizingMultipl iers)
799 { 799 {
800 UseMockScrollbarSettings mockScrollbarSettings; 800 UseMockScrollbarSettings mockScrollbarSettings;
801 registerMockedHttpURLLoad("fixed_layout.html"); 801 registerMockedHttpURLLoad("fixed_layout.html");
802 802
803 FixedLayoutTestWebViewClient client; 803 FixedLayoutTestWebViewClient client;
804 int viewportWidth = 640; 804 int viewportWidth = 640;
805 int viewportHeight = 480; 805 int viewportHeight = 480;
806 806
807 FrameTestHelpers::WebViewHelper webViewHelper(this); 807 FrameTestHelpers::WebViewHelper webViewHelper(this);
808 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 808 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
809 809
810 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document(); 810 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document();
811 document->settings()->setTextAutosizingEnabled(true); 811 document->settings()->setTextAutosizingEnabled(true);
812 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 812 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
813 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight)); 813 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
814 webViewHelper.webViewImpl()->layout(); 814 webViewHelper.webViewImpl()->layout();
815 815
816 EXPECT_TRUE(setTextAutosizingMultiplier(document, 2)); 816 EXPECT_TRUE(setTextAutosizingMultiplier(document, 2));
817 817
818 ViewportDescription description = document->viewportDescription(); 818 ViewportDescription description = document->viewportDescription();
819 // Choose a width that's not going match the viewport width of the loaded do cument. 819 // Choose a width that's not going match the viewport width of the loaded do cument.
820 description.minWidth = Length(100, blink::Fixed); 820 description.minWidth = Length(100, blink::Fixed);
821 description.maxWidth = Length(100, blink::Fixed); 821 description.maxWidth = Length(100, blink::Fixed);
822 webViewHelper.webViewImpl()->updatePageDefinedViewportConstraints(descriptio n); 822 webViewHelper.webViewImpl()->updatePageDefinedViewportConstraints(descriptio n);
823 823
824 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 1)); 824 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 1));
825 } 825 }
826 826
827 TEST_P(ParametrizedWebFrameTest, WorkingTextAutosizingMultipliers_VirtualViewpor t) 827 TEST_P(ParameterizedWebFrameTest, WorkingTextAutosizingMultipliers_VirtualViewpo rt)
828 { 828 {
829 UseMockScrollbarSettings mockScrollbarSettings; 829 UseMockScrollbarSettings mockScrollbarSettings;
830 const std::string htmlFile = "fixed_layout.html"; 830 const std::string htmlFile = "fixed_layout.html";
831 registerMockedHttpURLLoad(htmlFile); 831 registerMockedHttpURLLoad(htmlFile);
832 832
833 FixedLayoutTestWebViewClient client; 833 FixedLayoutTestWebViewClient client;
834 834
835 FrameTestHelpers::WebViewHelper webViewHelper(this); 835 FrameTestHelpers::WebViewHelper webViewHelper(this);
836 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client, conf igureAndroid); 836 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client, conf igureAndroid);
837 837
838 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document(); 838 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document();
839 document->settings()->setTextAutosizingEnabled(true); 839 document->settings()->setTextAutosizingEnabled(true);
840 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 840 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
841 841
842 webViewHelper.webView()->resize(WebSize(490, 800)); 842 webViewHelper.webView()->resize(WebSize(490, 800));
843 843
844 // Multiplier: 980 / 490 = 2.0 844 // Multiplier: 980 / 490 = 2.0
845 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 2.0)); 845 EXPECT_TRUE(checkTextAutosizingMultiplier(document, 2.0));
846 } 846 }
847 847
848 TEST_P(ParametrizedWebFrameTest, PinchViewportSetSizeInvalidatesTextAutosizingMu ltipliers) 848 TEST_P(ParameterizedWebFrameTest, PinchViewportSetSizeInvalidatesTextAutosizingM ultipliers)
849 { 849 {
850 UseMockScrollbarSettings mockScrollbarSettings; 850 UseMockScrollbarSettings mockScrollbarSettings;
851 registerMockedHttpURLLoad("iframe_reload.html"); 851 registerMockedHttpURLLoad("iframe_reload.html");
852 registerMockedHttpURLLoad("visible_iframe.html"); 852 registerMockedHttpURLLoad("visible_iframe.html");
853 853
854 FixedLayoutTestWebViewClient client; 854 FixedLayoutTestWebViewClient client;
855 int viewportWidth = 640; 855 int viewportWidth = 640;
856 int viewportHeight = 480; 856 int viewportHeight = 480;
857 857
858 FrameTestHelpers::WebViewHelper webViewHelper(this); 858 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 22 matching lines...) Expand all
881 for (Frame* frame = mainFrame; frame; frame = frame->tree().traverseNext()) { 881 for (Frame* frame = mainFrame; frame; frame = frame->tree().traverseNext()) {
882 if (!frame->isLocalFrame()) 882 if (!frame->isLocalFrame())
883 continue; 883 continue;
884 for (LayoutObject* layoutObject = toLocalFrame(frame)->document()->layou tView(); layoutObject; layoutObject = layoutObject->nextInPreOrder()) { 884 for (LayoutObject* layoutObject = toLocalFrame(frame)->document()->layou tView(); layoutObject; layoutObject = layoutObject->nextInPreOrder()) {
885 if (layoutObject->isText()) 885 if (layoutObject->isText())
886 EXPECT_TRUE(layoutObject->needsLayout()); 886 EXPECT_TRUE(layoutObject->needsLayout());
887 } 887 }
888 } 888 }
889 } 889 }
890 890
891 TEST_P(ParametrizedWebFrameTest, ZeroHeightPositiveWidthNotIgnored) 891 TEST_P(ParameterizedWebFrameTest, ZeroHeightPositiveWidthNotIgnored)
892 { 892 {
893 UseMockScrollbarSettings mockScrollbarSettings; 893 UseMockScrollbarSettings mockScrollbarSettings;
894 894
895 FixedLayoutTestWebViewClient client; 895 FixedLayoutTestWebViewClient client;
896 client.m_screenInfo.deviceScaleFactor = 1; 896 client.m_screenInfo.deviceScaleFactor = 1;
897 int viewportWidth = 1280; 897 int viewportWidth = 1280;
898 int viewportHeight = 0; 898 int viewportHeight = 0;
899 899
900 FrameTestHelpers::WebViewHelper webViewHelper(this); 900 FrameTestHelpers::WebViewHelper webViewHelper(this);
901 webViewHelper.initialize(true, 0, &client, enableViewportSettings); 901 webViewHelper.initialize(true, 0, &client, enableViewportSettings);
902 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 902 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
903 903
904 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width()); 904 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
905 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->layoutSize().height()); 905 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->layoutSize().height());
906 } 906 }
907 907
908 TEST_P(ParametrizedWebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag) 908 TEST_P(ParameterizedWebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag )
909 { 909 {
910 UseMockScrollbarSettings mockScrollbarSettings; 910 UseMockScrollbarSettings mockScrollbarSettings;
911 registerMockedHttpURLLoad("no_viewport_tag.html"); 911 registerMockedHttpURLLoad("no_viewport_tag.html");
912 912
913 int viewportWidth = 640; 913 int viewportWidth = 640;
914 int viewportHeight = 480; 914 int viewportHeight = 480;
915 915
916 FixedLayoutTestWebViewClient client; 916 FixedLayoutTestWebViewClient client;
917 client.m_screenInfo.deviceScaleFactor = 2; 917 client.m_screenInfo.deviceScaleFactor = 2;
918 918
919 FrameTestHelpers::WebViewHelper webViewHelper(this); 919 FrameTestHelpers::WebViewHelper webViewHelper(this);
920 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client, enableViewportSettings); 920 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client, enableViewportSettings);
921 921
922 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 922 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
923 webViewHelper.webView()->layout(); 923 webViewHelper.webView()->layout();
924 924
925 EXPECT_EQ(2, webViewHelper.webView()->deviceScaleFactor()); 925 EXPECT_EQ(2, webViewHelper.webView()->deviceScaleFactor());
926 926
927 // Device scale factor should be independent of page scale. 927 // Device scale factor should be independent of page scale.
928 webViewHelper.webView()->setDefaultPageScaleLimits(1, 2); 928 webViewHelper.webView()->setDefaultPageScaleLimits(1, 2);
929 webViewHelper.webView()->setPageScaleFactor(0.5); 929 webViewHelper.webView()->setPageScaleFactor(0.5);
930 webViewHelper.webView()->layout(); 930 webViewHelper.webView()->layout();
931 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor()); 931 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor());
932 932
933 // Force the layout to happen before leaving the test. 933 // Force the layout to happen before leaving the test.
934 webViewHelper.webView()->mainFrame()->contentAsText(1024).utf8(); 934 webViewHelper.webView()->mainFrame()->contentAsText(1024).utf8();
935 } 935 }
936 936
937 TEST_P(ParametrizedWebFrameTest, FixedLayoutInitializeAtMinimumScale) 937 TEST_P(ParameterizedWebFrameTest, FixedLayoutInitializeAtMinimumScale)
938 { 938 {
939 UseMockScrollbarSettings mockScrollbarSettings; 939 UseMockScrollbarSettings mockScrollbarSettings;
940 940
941 registerMockedHttpURLLoad("fixed_layout.html"); 941 registerMockedHttpURLLoad("fixed_layout.html");
942 942
943 FixedLayoutTestWebViewClient client; 943 FixedLayoutTestWebViewClient client;
944 client.m_screenInfo.deviceScaleFactor = 1; 944 client.m_screenInfo.deviceScaleFactor = 1;
945 int viewportWidth = 640; 945 int viewportWidth = 640;
946 int viewportHeight = 480; 946 int viewportHeight = 480;
947 947
(...skipping 18 matching lines...) Expand all
966 // Make sure we don't reset to initial scale if the page continues to load. 966 // Make sure we don't reset to initial scale if the page continues to load.
967 webViewHelper.webViewImpl()->didCommitLoad(false, false); 967 webViewHelper.webViewImpl()->didCommitLoad(false, false);
968 webViewHelper.webViewImpl()->didChangeContentsSize(); 968 webViewHelper.webViewImpl()->didChangeContentsSize();
969 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 969 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
970 970
971 // Make sure we don't reset to initial scale if the viewport size changes. 971 // Make sure we don't reset to initial scale if the viewport size changes.
972 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) ); 972 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) );
973 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 973 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
974 } 974 }
975 975
976 TEST_P(ParametrizedWebFrameTest, WideDocumentInitializeAtMinimumScale) 976 TEST_P(ParameterizedWebFrameTest, WideDocumentInitializeAtMinimumScale)
977 { 977 {
978 UseMockScrollbarSettings mockScrollbarSettings; 978 UseMockScrollbarSettings mockScrollbarSettings;
979 979
980 registerMockedHttpURLLoad("wide_document.html"); 980 registerMockedHttpURLLoad("wide_document.html");
981 981
982 FixedLayoutTestWebViewClient client; 982 FixedLayoutTestWebViewClient client;
983 client.m_screenInfo.deviceScaleFactor = 1; 983 client.m_screenInfo.deviceScaleFactor = 1;
984 int viewportWidth = 640; 984 int viewportWidth = 640;
985 int viewportHeight = 480; 985 int viewportHeight = 480;
986 986
(...skipping 18 matching lines...) Expand all
1005 // Make sure we don't reset to initial scale if the page continues to load. 1005 // Make sure we don't reset to initial scale if the page continues to load.
1006 webViewHelper.webViewImpl()->didCommitLoad(false, false); 1006 webViewHelper.webViewImpl()->didCommitLoad(false, false);
1007 webViewHelper.webViewImpl()->didChangeContentsSize(); 1007 webViewHelper.webViewImpl()->didChangeContentsSize();
1008 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 1008 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
1009 1009
1010 // Make sure we don't reset to initial scale if the viewport size changes. 1010 // Make sure we don't reset to initial scale if the viewport size changes.
1011 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) ); 1011 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) );
1012 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 1012 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
1013 } 1013 }
1014 1014
1015 TEST_P(ParametrizedWebFrameTest, DelayedViewportInitialScale) 1015 TEST_P(ParameterizedWebFrameTest, DelayedViewportInitialScale)
1016 { 1016 {
1017 UseMockScrollbarSettings mockScrollbarSettings; 1017 UseMockScrollbarSettings mockScrollbarSettings;
1018 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1018 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1019 1019
1020 FixedLayoutTestWebViewClient client; 1020 FixedLayoutTestWebViewClient client;
1021 client.m_screenInfo.deviceScaleFactor = 1; 1021 client.m_screenInfo.deviceScaleFactor = 1;
1022 int viewportWidth = 640; 1022 int viewportWidth = 640;
1023 int viewportHeight = 480; 1023 int viewportHeight = 480;
1024 1024
1025 FrameTestHelpers::WebViewHelper webViewHelper(this); 1025 FrameTestHelpers::WebViewHelper webViewHelper(this);
1026 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings); 1026 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings);
1027 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1027 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1028 1028
1029 EXPECT_EQ(0.25f, webViewHelper.webView()->pageScaleFactor()); 1029 EXPECT_EQ(0.25f, webViewHelper.webView()->pageScaleFactor());
1030 1030
1031 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document(); 1031 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document();
1032 ViewportDescription description = document->viewportDescription(); 1032 ViewportDescription description = document->viewportDescription();
1033 description.zoom = 2; 1033 description.zoom = 2;
1034 document->setViewportDescription(description); 1034 document->setViewportDescription(description);
1035 webViewHelper.webView()->layout(); 1035 webViewHelper.webView()->layout();
1036 EXPECT_EQ(2, webViewHelper.webView()->pageScaleFactor()); 1036 EXPECT_EQ(2, webViewHelper.webView()->pageScaleFactor());
1037 } 1037 }
1038 1038
1039 TEST_P(ParametrizedWebFrameTest, setLoadWithOverviewModeToFalse) 1039 TEST_P(ParameterizedWebFrameTest, setLoadWithOverviewModeToFalse)
1040 { 1040 {
1041 UseMockScrollbarSettings mockScrollbarSettings; 1041 UseMockScrollbarSettings mockScrollbarSettings;
1042 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1042 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1043 1043
1044 FixedLayoutTestWebViewClient client; 1044 FixedLayoutTestWebViewClient client;
1045 client.m_screenInfo.deviceScaleFactor = 1; 1045 client.m_screenInfo.deviceScaleFactor = 1;
1046 int viewportWidth = 640; 1046 int viewportWidth = 640;
1047 int viewportHeight = 480; 1047 int viewportHeight = 480;
1048 1048
1049 FrameTestHelpers::WebViewHelper webViewHelper(this); 1049 FrameTestHelpers::WebViewHelper webViewHelper(this);
1050 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings); 1050 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings);
1051 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1051 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1052 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1052 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1053 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1053 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1054 1054
1055 // The page must be displayed at 100% zoom. 1055 // The page must be displayed at 100% zoom.
1056 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1056 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1057 } 1057 }
1058 1058
1059 TEST_P(ParametrizedWebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport ) 1059 TEST_P(ParameterizedWebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewpor t)
1060 { 1060 {
1061 UseMockScrollbarSettings mockScrollbarSettings; 1061 UseMockScrollbarSettings mockScrollbarSettings;
1062 registerMockedHttpURLLoad("large-div.html"); 1062 registerMockedHttpURLLoad("large-div.html");
1063 1063
1064 FixedLayoutTestWebViewClient client; 1064 FixedLayoutTestWebViewClient client;
1065 client.m_screenInfo.deviceScaleFactor = 1; 1065 client.m_screenInfo.deviceScaleFactor = 1;
1066 int viewportWidth = 640; 1066 int viewportWidth = 640;
1067 int viewportHeight = 480; 1067 int viewportHeight = 480;
1068 1068
1069 FrameTestHelpers::WebViewHelper webViewHelper(this); 1069 FrameTestHelpers::WebViewHelper webViewHelper(this);
1070 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt, enableViewportSettings); 1070 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt, enableViewportSettings);
1071 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1071 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1072 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1072 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1073 webViewHelper.webView()->settings()->setUseWideViewport(false); 1073 webViewHelper.webView()->settings()->setUseWideViewport(false);
1074 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1074 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1075 1075
1076 // The page must be displayed at 100% zoom, despite that it hosts a wide div element. 1076 // The page must be displayed at 100% zoom, despite that it hosts a wide div element.
1077 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1077 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1078 } 1078 }
1079 1079
1080 TEST_P(ParametrizedWebFrameTest, NoWideViewportIgnoresPageViewportWidth) 1080 TEST_P(ParameterizedWebFrameTest, NoWideViewportIgnoresPageViewportWidth)
1081 { 1081 {
1082 UseMockScrollbarSettings mockScrollbarSettings; 1082 UseMockScrollbarSettings mockScrollbarSettings;
1083 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1083 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1084 1084
1085 FixedLayoutTestWebViewClient client; 1085 FixedLayoutTestWebViewClient client;
1086 client.m_screenInfo.deviceScaleFactor = 1; 1086 client.m_screenInfo.deviceScaleFactor = 1;
1087 int viewportWidth = 640; 1087 int viewportWidth = 640;
1088 int viewportHeight = 480; 1088 int viewportHeight = 480;
1089 1089
1090 FrameTestHelpers::WebViewHelper webViewHelper(this); 1090 FrameTestHelpers::WebViewHelper webViewHelper(this);
1091 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings); 1091 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings);
1092 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1092 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1093 webViewHelper.webView()->settings()->setUseWideViewport(false); 1093 webViewHelper.webView()->settings()->setUseWideViewport(false);
1094 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1094 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1095 1095
1096 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored. 1096 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
1097 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width()); 1097 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width());
1098 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->contentsSize().height()); 1098 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->contentsSize().height());
1099 } 1099 }
1100 1100
1101 TEST_P(ParametrizedWebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccoun tsScale) 1101 TEST_P(ParameterizedWebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccou ntsScale)
1102 { 1102 {
1103 UseMockScrollbarSettings mockScrollbarSettings; 1103 UseMockScrollbarSettings mockScrollbarSettings;
1104 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1104 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1105 1105
1106 FixedLayoutTestWebViewClient client; 1106 FixedLayoutTestWebViewClient client;
1107 client.m_screenInfo.deviceScaleFactor = 1; 1107 client.m_screenInfo.deviceScaleFactor = 1;
1108 int viewportWidth = 640; 1108 int viewportWidth = 640;
1109 int viewportHeight = 480; 1109 int viewportHeight = 480;
1110 1110
1111 FrameTestHelpers::WebViewHelper webViewHelper(this); 1111 FrameTestHelpers::WebViewHelper webViewHelper(this);
1112 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client, enableViewportSettings); 1112 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client, enableViewportSettings);
1113 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1113 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1114 webViewHelper.webView()->settings()->setUseWideViewport(false); 1114 webViewHelper.webView()->settings()->setUseWideViewport(false);
1115 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1115 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1116 1116
1117 // The page sets viewport width to 3000, but with UseWideViewport == false i t must be ignored. 1117 // The page sets viewport width to 3000, but with UseWideViewport == false i t must be ignored.
1118 // While the initial scale specified by the page must be accounted. 1118 // While the initial scale specified by the page must be accounted.
1119 EXPECT_EQ(viewportWidth / 2, webViewHelper.webViewImpl()->mainFrameImpl()->f rameView()->contentsSize().width()); 1119 EXPECT_EQ(viewportWidth / 2, webViewHelper.webViewImpl()->mainFrameImpl()->f rameView()->contentsSize().width());
1120 EXPECT_EQ(viewportHeight / 2, webViewHelper.webViewImpl()->mainFrameImpl()-> frameView()->contentsSize().height()); 1120 EXPECT_EQ(viewportHeight / 2, webViewHelper.webViewImpl()->mainFrameImpl()-> frameView()->contentsSize().height());
1121 } 1121 }
1122 1122
1123 TEST_P(ParametrizedWebFrameTest, WideViewportSetsTo980WithoutViewportTag) 1123 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithoutViewportTag)
1124 { 1124 {
1125 UseMockScrollbarSettings mockScrollbarSettings; 1125 UseMockScrollbarSettings mockScrollbarSettings;
1126 registerMockedHttpURLLoad("no_viewport_tag.html"); 1126 registerMockedHttpURLLoad("no_viewport_tag.html");
1127 1127
1128 FixedLayoutTestWebViewClient client; 1128 FixedLayoutTestWebViewClient client;
1129 client.m_screenInfo.deviceScaleFactor = 1; 1129 client.m_screenInfo.deviceScaleFactor = 1;
1130 int viewportWidth = 640; 1130 int viewportWidth = 640;
1131 int viewportHeight = 480; 1131 int viewportHeight = 480;
1132 1132
1133 FrameTestHelpers::WebViewHelper webViewHelper(this); 1133 FrameTestHelpers::WebViewHelper webViewHelper(this);
1134 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client, enableViewportSettings); 1134 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client, enableViewportSettings);
1135 applyViewportStyleOverride(&webViewHelper); 1135 applyViewportStyleOverride(&webViewHelper);
1136 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1136 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1137 webViewHelper.webView()->settings()->setUseWideViewport(true); 1137 webViewHelper.webView()->settings()->setUseWideViewport(true);
1138 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1138 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1139 1139
1140 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 1140 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
1141 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height()); 1141 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height());
1142 } 1142 }
1143 1143
1144 TEST_P(ParametrizedWebFrameTest, WideViewportSetsTo980WithXhtmlMp) 1144 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithXhtmlMp)
1145 { 1145 {
1146 UseMockScrollbarSettings mockScrollbarSettings; 1146 UseMockScrollbarSettings mockScrollbarSettings;
1147 registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp.html"); 1147 registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp.html");
1148 1148
1149 FixedLayoutTestWebViewClient client; 1149 FixedLayoutTestWebViewClient client;
1150 client.m_screenInfo.deviceScaleFactor = 1; 1150 client.m_screenInfo.deviceScaleFactor = 1;
1151 int viewportWidth = 640; 1151 int viewportWidth = 640;
1152 int viewportHeight = 480; 1152 int viewportHeight = 480;
1153 1153
1154 FrameTestHelpers::WebViewHelper webViewHelper(this); 1154 FrameTestHelpers::WebViewHelper webViewHelper(this);
1155 webViewHelper.initialize(true, 0, &client, enableViewportSettings); 1155 webViewHelper.initialize(true, 0, &client, enableViewportSettings);
1156 applyViewportStyleOverride(&webViewHelper); 1156 applyViewportStyleOverride(&webViewHelper);
1157 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1157 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1158 webViewHelper.webView()->settings()->setUseWideViewport(true); 1158 webViewHelper.webView()->settings()->setUseWideViewport(true);
1159 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport/viewport-legacy-xhtmlmp.html"); 1159 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport/viewport-legacy-xhtmlmp.html");
1160 1160
1161 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1161 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1162 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width()); 1162 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width());
1163 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->contentsSize().height()); 1163 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->contentsSize().height());
1164 } 1164 }
1165 1165
1166 TEST_P(ParametrizedWebFrameTest, NoWideViewportAndHeightInMeta) 1166 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndHeightInMeta)
1167 { 1167 {
1168 UseMockScrollbarSettings mockScrollbarSettings; 1168 UseMockScrollbarSettings mockScrollbarSettings;
1169 registerMockedHttpURLLoad("viewport-height-1000.html"); 1169 registerMockedHttpURLLoad("viewport-height-1000.html");
1170 1170
1171 FixedLayoutTestWebViewClient client; 1171 FixedLayoutTestWebViewClient client;
1172 client.m_screenInfo.deviceScaleFactor = 1; 1172 client.m_screenInfo.deviceScaleFactor = 1;
1173 int viewportWidth = 640; 1173 int viewportWidth = 640;
1174 int viewportHeight = 480; 1174 int viewportHeight = 480;
1175 1175
1176 FrameTestHelpers::WebViewHelper webViewHelper(this); 1176 FrameTestHelpers::WebViewHelper webViewHelper(this);
1177 webViewHelper.initializeAndLoad(m_baseURL + "viewport-height-1000.html", tru e, 0, &client, enableViewportSettings); 1177 webViewHelper.initializeAndLoad(m_baseURL + "viewport-height-1000.html", tru e, 0, &client, enableViewportSettings);
1178 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1178 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1179 webViewHelper.webView()->settings()->setUseWideViewport(false); 1179 webViewHelper.webView()->settings()->setUseWideViewport(false);
1180 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1180 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1181 1181
1182 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width()); 1182 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width());
1183 } 1183 }
1184 1184
1185 TEST_P(ParametrizedWebFrameTest, WideViewportSetsTo980WithAutoWidth) 1185 TEST_P(ParameterizedWebFrameTest, WideViewportSetsTo980WithAutoWidth)
1186 { 1186 {
1187 UseMockScrollbarSettings mockScrollbarSettings; 1187 UseMockScrollbarSettings mockScrollbarSettings;
1188 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); 1188 registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
1189 1189
1190 FixedLayoutTestWebViewClient client; 1190 FixedLayoutTestWebViewClient client;
1191 client.m_screenInfo.deviceScaleFactor = 1; 1191 client.m_screenInfo.deviceScaleFactor = 1;
1192 int viewportWidth = 640; 1192 int viewportWidth = 640;
1193 int viewportHeight = 480; 1193 int viewportHeight = 480;
1194 1194
1195 FrameTestHelpers::WebViewHelper webViewHelper(this); 1195 FrameTestHelpers::WebViewHelper webViewHelper(this);
1196 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale.html" , true, 0, &client, enableViewportSettings); 1196 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale.html" , true, 0, &client, enableViewportSettings);
1197 applyViewportStyleOverride(&webViewHelper); 1197 applyViewportStyleOverride(&webViewHelper);
1198 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1198 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1199 webViewHelper.webView()->settings()->setUseWideViewport(true); 1199 webViewHelper.webView()->settings()->setUseWideViewport(true);
1200 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1200 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1201 1201
1202 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 1202 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
1203 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height()); 1203 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height());
1204 } 1204 }
1205 1205
1206 TEST_P(ParametrizedWebFrameTest, PageViewportInitialScaleOverridesLoadWithOvervi ewMode) 1206 TEST_P(ParameterizedWebFrameTest, PageViewportInitialScaleOverridesLoadWithOverv iewMode)
1207 { 1207 {
1208 UseMockScrollbarSettings mockScrollbarSettings; 1208 UseMockScrollbarSettings mockScrollbarSettings;
1209 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1209 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1210 1210
1211 FixedLayoutTestWebViewClient client; 1211 FixedLayoutTestWebViewClient client;
1212 client.m_screenInfo.deviceScaleFactor = 1; 1212 client.m_screenInfo.deviceScaleFactor = 1;
1213 int viewportWidth = 640; 1213 int viewportWidth = 640;
1214 int viewportHeight = 480; 1214 int viewportHeight = 480;
1215 1215
1216 FrameTestHelpers::WebViewHelper webViewHelper(this); 1216 FrameTestHelpers::WebViewHelper webViewHelper(this);
1217 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client, enableViewportSettings); 1217 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client, enableViewportSettings);
1218 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1218 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1219 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1219 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1220 1220
1221 // The page must be displayed at 200% zoom, as specified in its viewport met a tag. 1221 // The page must be displayed at 200% zoom, as specified in its viewport met a tag.
1222 EXPECT_EQ(2.0f, webViewHelper.webView()->pageScaleFactor()); 1222 EXPECT_EQ(2.0f, webViewHelper.webView()->pageScaleFactor());
1223 } 1223 }
1224 1224
1225 TEST_P(ParametrizedWebFrameTest, setInitialPageScaleFactorPermanently) 1225 TEST_P(ParameterizedWebFrameTest, setInitialPageScaleFactorPermanently)
1226 { 1226 {
1227 UseMockScrollbarSettings mockScrollbarSettings; 1227 UseMockScrollbarSettings mockScrollbarSettings;
1228 1228
1229 registerMockedHttpURLLoad("fixed_layout.html"); 1229 registerMockedHttpURLLoad("fixed_layout.html");
1230 1230
1231 FixedLayoutTestWebViewClient client; 1231 FixedLayoutTestWebViewClient client;
1232 client.m_screenInfo.deviceScaleFactor = 1; 1232 client.m_screenInfo.deviceScaleFactor = 1;
1233 float enforcedPageScaleFactor = 2.0f; 1233 float enforcedPageScaleFactor = 2.0f;
1234 1234
1235 FrameTestHelpers::WebViewHelper webViewHelper(this); 1235 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 11 matching lines...) Expand all
1247 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1247 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1248 webViewHelper.webView()->layout(); 1248 webViewHelper.webView()->layout();
1249 1249
1250 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1250 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1251 1251
1252 webViewHelper.webView()->setInitialPageScaleOverride(-1); 1252 webViewHelper.webView()->setInitialPageScaleOverride(-1);
1253 webViewHelper.webView()->layout(); 1253 webViewHelper.webView()->layout();
1254 EXPECT_EQ(1.0, webViewHelper.webView()->pageScaleFactor()); 1254 EXPECT_EQ(1.0, webViewHelper.webView()->pageScaleFactor());
1255 } 1255 }
1256 1256
1257 TEST_P(ParametrizedWebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWit hOverviewMode) 1257 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWi thOverviewMode)
1258 { 1258 {
1259 UseMockScrollbarSettings mockScrollbarSettings; 1259 UseMockScrollbarSettings mockScrollbarSettings;
1260 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1260 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1261 1261
1262 FixedLayoutTestWebViewClient client; 1262 FixedLayoutTestWebViewClient client;
1263 client.m_screenInfo.deviceScaleFactor = 1; 1263 client.m_screenInfo.deviceScaleFactor = 1;
1264 int viewportWidth = 640; 1264 int viewportWidth = 640;
1265 int viewportHeight = 480; 1265 int viewportHeight = 480;
1266 float enforcedPageScaleFactor = 0.5f; 1266 float enforcedPageScaleFactor = 0.5f;
1267 1267
1268 FrameTestHelpers::WebViewHelper webViewHelper(this); 1268 FrameTestHelpers::WebViewHelper webViewHelper(this);
1269 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings); 1269 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client, enableViewportSettings);
1270 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1270 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1271 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1271 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1272 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1272 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1273 1273
1274 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1274 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1275 } 1275 }
1276 1276
1277 TEST_P(ParametrizedWebFrameTest, PermanentInitialPageScaleFactorOverridesPageVie wportInitialScale) 1277 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorOverridesPageVi ewportInitialScale)
1278 { 1278 {
1279 UseMockScrollbarSettings mockScrollbarSettings; 1279 UseMockScrollbarSettings mockScrollbarSettings;
1280 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1280 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1281 1281
1282 FixedLayoutTestWebViewClient client; 1282 FixedLayoutTestWebViewClient client;
1283 client.m_screenInfo.deviceScaleFactor = 1; 1283 client.m_screenInfo.deviceScaleFactor = 1;
1284 int viewportWidth = 640; 1284 int viewportWidth = 640;
1285 int viewportHeight = 480; 1285 int viewportHeight = 480;
1286 float enforcedPageScaleFactor = 0.5f; 1286 float enforcedPageScaleFactor = 0.5f;
1287 1287
1288 FrameTestHelpers::WebViewHelper webViewHelper(this); 1288 FrameTestHelpers::WebViewHelper webViewHelper(this);
1289 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client, enableViewportSettings); 1289 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client, enableViewportSettings);
1290 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1290 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1291 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1291 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1292 1292
1293 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1293 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1294 } 1294 }
1295 1295
1296 TEST_P(ParametrizedWebFrameTest, SmallPermanentInitialPageScaleFactorIsClobbered ) 1296 TEST_P(ParameterizedWebFrameTest, SmallPermanentInitialPageScaleFactorIsClobbere d)
1297 { 1297 {
1298 UseMockScrollbarSettings mockScrollbarSettings; 1298 UseMockScrollbarSettings mockScrollbarSettings;
1299 const char* pages[] = { 1299 const char* pages[] = {
1300 // These pages trigger the clobbering condition. There must be a matchin g item in "pageScaleFactors" array. 1300 // These pages trigger the clobbering condition. There must be a matchin g item in "pageScaleFactors" array.
1301 "viewport-device-0.5x-initial-scale.html", 1301 "viewport-device-0.5x-initial-scale.html",
1302 "viewport-initial-scale-1.html", 1302 "viewport-initial-scale-1.html",
1303 // These ones do not. 1303 // These ones do not.
1304 "viewport-auto-initial-scale.html", 1304 "viewport-auto-initial-scale.html",
1305 "viewport-target-densitydpi-device-and-fixed-width.html" 1305 "viewport-target-densitydpi-device-and-fixed-width.html"
1306 }; 1306 };
(...skipping 15 matching lines...) Expand all
1322 webViewHelper.webView()->settings()->setClobberUserAgentInitialScale Quirk(quirkEnabled); 1322 webViewHelper.webView()->settings()->setClobberUserAgentInitialScale Quirk(quirkEnabled);
1323 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageSca leFactor); 1323 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageSca leFactor);
1324 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeigh t)); 1324 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeigh t));
1325 1325
1326 float expectedPageScaleFactor = quirkEnabled && i < ARRAY_SIZE(pageS caleFactors) ? pageScaleFactors[i] : enforcedPageScaleFactor; 1326 float expectedPageScaleFactor = quirkEnabled && i < ARRAY_SIZE(pageS caleFactors) ? pageScaleFactors[i] : enforcedPageScaleFactor;
1327 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScal eFactor()); 1327 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScal eFactor());
1328 } 1328 }
1329 } 1329 }
1330 } 1330 }
1331 1331
1332 TEST_P(ParametrizedWebFrameTest, PermanentInitialPageScaleFactorAffectsLayoutWid th) 1332 TEST_P(ParameterizedWebFrameTest, PermanentInitialPageScaleFactorAffectsLayoutWi dth)
1333 { 1333 {
1334 UseMockScrollbarSettings mockScrollbarSettings; 1334 UseMockScrollbarSettings mockScrollbarSettings;
1335 1335
1336 FixedLayoutTestWebViewClient client; 1336 FixedLayoutTestWebViewClient client;
1337 client.m_screenInfo.deviceScaleFactor = 1; 1337 client.m_screenInfo.deviceScaleFactor = 1;
1338 int viewportWidth = 640; 1338 int viewportWidth = 640;
1339 int viewportHeight = 480; 1339 int viewportHeight = 480;
1340 float enforcedPageScaleFactor = 0.5; 1340 float enforcedPageScaleFactor = 0.5;
1341 1341
1342 FrameTestHelpers::WebViewHelper webViewHelper(this); 1342 FrameTestHelpers::WebViewHelper webViewHelper(this);
1343 webViewHelper.initializeAndLoad("about:blank", true, 0, &client, enableViewp ortSettings); 1343 webViewHelper.initializeAndLoad("about:blank", true, 0, &client, enableViewp ortSettings);
1344 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1344 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1345 webViewHelper.webView()->settings()->setUseWideViewport(false); 1345 webViewHelper.webView()->settings()->setUseWideViewport(false);
1346 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1346 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1347 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1347 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1348 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1348 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1349 1349
1350 EXPECT_EQ(viewportWidth / enforcedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->contentsSize().width()); 1350 EXPECT_EQ(viewportWidth / enforcedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->contentsSize().width());
1351 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1351 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1352 } 1352 }
1353 1353
1354 TEST_P(ParametrizedWebFrameTest, DocumentElementClientHeightWorksWithWrapContent Mode) 1354 TEST_P(ParameterizedWebFrameTest, DocumentElementClientHeightWorksWithWrapConten tMode)
1355 { 1355 {
1356 UseMockScrollbarSettings mockScrollbarSettings; 1356 UseMockScrollbarSettings mockScrollbarSettings;
1357 registerMockedHttpURLLoad("0-by-0.html"); 1357 registerMockedHttpURLLoad("0-by-0.html");
1358 1358
1359 FixedLayoutTestWebViewClient client; 1359 FixedLayoutTestWebViewClient client;
1360 client.m_screenInfo.deviceScaleFactor = 1; 1360 client.m_screenInfo.deviceScaleFactor = 1;
1361 int viewportWidth = 640; 1361 int viewportWidth = 640;
1362 int viewportHeight = 480; 1362 int viewportHeight = 480;
1363 1363
1364 FrameTestHelpers::WebViewHelper webViewHelper(this); 1364 FrameTestHelpers::WebViewHelper webViewHelper(this);
1365 1365
1366 webViewHelper.initializeAndLoad(m_baseURL + "0-by-0.html", true, 0, &client, configureAndroid); 1366 webViewHelper.initializeAndLoad(m_baseURL + "0-by-0.html", true, 0, &client, configureAndroid);
1367 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1367 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1368 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1368 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1369 1369
1370 LocalFrame* frame = webViewHelper.webViewImpl()->mainFrameImpl()->frame(); 1370 LocalFrame* frame = webViewHelper.webViewImpl()->mainFrameImpl()->frame();
1371 Document* document = frame->document(); 1371 Document* document = frame->document();
1372 EXPECT_EQ(viewportHeight, document->documentElement()->clientHeight()); 1372 EXPECT_EQ(viewportHeight, document->documentElement()->clientHeight());
1373 EXPECT_EQ(viewportWidth, document->documentElement()->clientWidth()); 1373 EXPECT_EQ(viewportWidth, document->documentElement()->clientWidth());
1374 } 1374 }
1375 1375
1376 TEST_P(ParametrizedWebFrameTest, SetForceZeroLayoutHeightWorksWithWrapContentMod e) 1376 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWorksWithWrapContentMo de)
1377 { 1377 {
1378 UseMockScrollbarSettings mockScrollbarSettings; 1378 UseMockScrollbarSettings mockScrollbarSettings;
1379 registerMockedHttpURLLoad("0-by-0.html"); 1379 registerMockedHttpURLLoad("0-by-0.html");
1380 1380
1381 FixedLayoutTestWebViewClient client; 1381 FixedLayoutTestWebViewClient client;
1382 client.m_screenInfo.deviceScaleFactor = 1; 1382 client.m_screenInfo.deviceScaleFactor = 1;
1383 int viewportWidth = 640; 1383 int viewportWidth = 640;
1384 int viewportHeight = 480; 1384 int viewportHeight = 480;
1385 1385
1386 FrameTestHelpers::WebViewHelper webViewHelper(this); 1386 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 22 matching lines...) Expand all
1409 EXPECT_EQ(viewportWidth, compositor->containerLayer()->size().width()); 1409 EXPECT_EQ(viewportWidth, compositor->containerLayer()->size().width());
1410 EXPECT_EQ(viewportHeight, compositor->containerLayer()->size().height()); 1410 EXPECT_EQ(viewportHeight, compositor->containerLayer()->size().height());
1411 1411
1412 LocalFrame* frame = webViewHelper.webViewImpl()->mainFrameImpl()->frame(); 1412 LocalFrame* frame = webViewHelper.webViewImpl()->mainFrameImpl()->frame();
1413 PinchViewport& pinchViewport = frame->page()->frameHost().pinchViewport(); 1413 PinchViewport& pinchViewport = frame->page()->frameHost().pinchViewport();
1414 EXPECT_EQ(viewportHeight, pinchViewport.containerLayer()->size().height()); 1414 EXPECT_EQ(viewportHeight, pinchViewport.containerLayer()->size().height());
1415 EXPECT_TRUE(pinchViewport.containerLayer()->platformLayer()->masksToBounds() ); 1415 EXPECT_TRUE(pinchViewport.containerLayer()->platformLayer()->masksToBounds() );
1416 EXPECT_FALSE(compositor->containerLayer()->platformLayer()->masksToBounds()) ; 1416 EXPECT_FALSE(compositor->containerLayer()->platformLayer()->masksToBounds()) ;
1417 } 1417 }
1418 1418
1419 TEST_P(ParametrizedWebFrameTest, SetForceZeroLayoutHeight) 1419 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeight)
1420 { 1420 {
1421 UseMockScrollbarSettings mockScrollbarSettings; 1421 UseMockScrollbarSettings mockScrollbarSettings;
1422 registerMockedHttpURLLoad("200-by-300.html"); 1422 registerMockedHttpURLLoad("200-by-300.html");
1423 1423
1424 FixedLayoutTestWebViewClient client; 1424 FixedLayoutTestWebViewClient client;
1425 client.m_screenInfo.deviceScaleFactor = 1; 1425 client.m_screenInfo.deviceScaleFactor = 1;
1426 int viewportWidth = 640; 1426 int viewportWidth = 640;
1427 int viewportHeight = 480; 1427 int viewportHeight = 480;
1428 1428
1429 FrameTestHelpers::WebViewHelper webViewHelper(this); 1429 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1486 1486
1487 ASSERT_NE(nullptr, element); 1487 ASSERT_NE(nullptr, element);
1488 EXPECT_EQ(String("oldValue"), element->innerText()); 1488 EXPECT_EQ(String("oldValue"), element->innerText());
1489 1489
1490 PlatformGestureEvent gestureEvent(PlatformEvent::Type::GestureTap, hitPoint, hitPoint, IntSize(0, 0), 0, false, false, false, false); 1490 PlatformGestureEvent gestureEvent(PlatformEvent::Type::GestureTap, hitPoint, hitPoint, IntSize(0, 0), 0, false, false, false, false);
1491 webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().handle GestureEvent(gestureEvent); 1491 webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().handle GestureEvent(gestureEvent);
1492 // when pressed, the button changes its own text to "updatedValue" 1492 // when pressed, the button changes its own text to "updatedValue"
1493 EXPECT_EQ(String("updatedValue"), element->innerText()); 1493 EXPECT_EQ(String("updatedValue"), element->innerText());
1494 } 1494 }
1495 1495
1496 TEST_P(ParametrizedWebFrameTest, SetForceZeroLayoutHeightWorksAcrossNavigations) 1496 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWorksAcrossNavigations )
1497 { 1497 {
1498 UseMockScrollbarSettings mockScrollbarSettings; 1498 UseMockScrollbarSettings mockScrollbarSettings;
1499 registerMockedHttpURLLoad("200-by-300.html"); 1499 registerMockedHttpURLLoad("200-by-300.html");
1500 registerMockedHttpURLLoad("large-div.html"); 1500 registerMockedHttpURLLoad("large-div.html");
1501 1501
1502 FixedLayoutTestWebViewClient client; 1502 FixedLayoutTestWebViewClient client;
1503 client.m_screenInfo.deviceScaleFactor = 1; 1503 client.m_screenInfo.deviceScaleFactor = 1;
1504 int viewportWidth = 640; 1504 int viewportWidth = 640;
1505 int viewportHeight = 480; 1505 int viewportHeight = 480;
1506 1506
1507 FrameTestHelpers::WebViewHelper webViewHelper(this); 1507 FrameTestHelpers::WebViewHelper webViewHelper(this);
1508 1508
1509 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, 0, &cli ent, enableViewportSettings); 1509 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, 0, &cli ent, enableViewportSettings);
1510 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1510 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1511 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1511 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1512 webViewHelper.webView()->layout(); 1512 webViewHelper.webView()->layout();
1513 1513
1514 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "large-div.html"); 1514 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "large-div.html");
1515 webViewHelper.webView()->layout(); 1515 webViewHelper.webView()->layout();
1516 1516
1517 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layo utSize().height()); 1517 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layo utSize().height());
1518 } 1518 }
1519 1519
1520 TEST_P(ParametrizedWebFrameTest, SetForceZeroLayoutHeightWithWideViewportQuirk) 1520 TEST_P(ParameterizedWebFrameTest, SetForceZeroLayoutHeightWithWideViewportQuirk)
1521 { 1521 {
1522 UseMockScrollbarSettings mockScrollbarSettings; 1522 UseMockScrollbarSettings mockScrollbarSettings;
1523 registerMockedHttpURLLoad("200-by-300.html"); 1523 registerMockedHttpURLLoad("200-by-300.html");
1524 1524
1525 FixedLayoutTestWebViewClient client; 1525 FixedLayoutTestWebViewClient client;
1526 client.m_screenInfo.deviceScaleFactor = 1; 1526 client.m_screenInfo.deviceScaleFactor = 1;
1527 int viewportWidth = 640; 1527 int viewportWidth = 640;
1528 int viewportHeight = 480; 1528 int viewportHeight = 480;
1529 1529
1530 FrameTestHelpers::WebViewHelper webViewHelper(this); 1530 FrameTestHelpers::WebViewHelper webViewHelper(this);
1531 1531
1532 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, 0, &cli ent, enableViewportSettings); 1532 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, 0, &cli ent, enableViewportSettings);
1533 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1533 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1534 webViewHelper.webView()->settings()->setUseWideViewport(true); 1534 webViewHelper.webView()->settings()->setUseWideViewport(true);
1535 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true); 1535 webViewHelper.webView()->settings()->setForceZeroLayoutHeight(true);
1536 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1536 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1537 webViewHelper.webView()->layout(); 1537 webViewHelper.webView()->layout();
1538 1538
1539 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layo utSize().height()); 1539 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layo utSize().height());
1540 } 1540 }
1541 1541
1542 TEST_P(ParametrizedWebFrameTest, WideViewportAndWideContentWithInitialScale) 1542 TEST_P(ParameterizedWebFrameTest, WideViewportAndWideContentWithInitialScale)
1543 { 1543 {
1544 UseMockScrollbarSettings mockScrollbarSettings; 1544 UseMockScrollbarSettings mockScrollbarSettings;
1545 registerMockedHttpURLLoad("wide_document_width_viewport.html"); 1545 registerMockedHttpURLLoad("wide_document_width_viewport.html");
1546 1546
1547 FixedLayoutTestWebViewClient client; 1547 FixedLayoutTestWebViewClient client;
1548 client.m_screenInfo.deviceScaleFactor = 1; 1548 client.m_screenInfo.deviceScaleFactor = 1;
1549 int viewportWidth = 600; 1549 int viewportWidth = 600;
1550 int viewportHeight = 800; 1550 int viewportHeight = 800;
1551 1551
1552 FrameTestHelpers::WebViewHelper webViewHelper(this); 1552 FrameTestHelpers::WebViewHelper webViewHelper(this);
1553 webViewHelper.initializeAndLoad("about:blank", true, 0, &client, enableViewp ortSettings); 1553 webViewHelper.initializeAndLoad("about:blank", true, 0, &client, enableViewp ortSettings);
1554 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1554 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1555 webViewHelper.webView()->settings()->setUseWideViewport(true); 1555 webViewHelper.webView()->settings()->setUseWideViewport(true);
1556 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1556 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1557 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1557 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1558 1558
1559 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document_width_viewport.html"); 1559 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document_width_viewport.html");
1560 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1560 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1561 1561
1562 int wideDocumentWidth = 800; 1562 int wideDocumentWidth = 800;
1563 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; 1563 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth;
1564 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webViewImpl()->pageScaleFact or()); 1564 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webViewImpl()->pageScaleFact or());
1565 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webViewImpl()->minimumPageSc aleFactor()); 1565 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webViewImpl()->minimumPageSc aleFactor());
1566 } 1566 }
1567 1567
1568 TEST_P(ParametrizedWebFrameTest, WideViewportQuirkClobbersHeight) 1568 TEST_P(ParameterizedWebFrameTest, WideViewportQuirkClobbersHeight)
1569 { 1569 {
1570 UseMockScrollbarSettings mockScrollbarSettings; 1570 UseMockScrollbarSettings mockScrollbarSettings;
1571 registerMockedHttpURLLoad("viewport-height-1000.html"); 1571 registerMockedHttpURLLoad("viewport-height-1000.html");
1572 1572
1573 FixedLayoutTestWebViewClient client; 1573 FixedLayoutTestWebViewClient client;
1574 client.m_screenInfo.deviceScaleFactor = 1; 1574 client.m_screenInfo.deviceScaleFactor = 1;
1575 int viewportWidth = 600; 1575 int viewportWidth = 600;
1576 int viewportHeight = 800; 1576 int viewportHeight = 800;
1577 1577
1578 FrameTestHelpers::WebViewHelper webViewHelper(this); 1578 FrameTestHelpers::WebViewHelper webViewHelper(this);
1579 webViewHelper.initializeAndLoad("about:blank", true, 0, &client, enableViewp ortSettings); 1579 webViewHelper.initializeAndLoad("about:blank", true, 0, &client, enableViewp ortSettings);
1580 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1580 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1581 webViewHelper.webView()->settings()->setUseWideViewport(false); 1581 webViewHelper.webView()->settings()->setUseWideViewport(false);
1582 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1582 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1583 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1583 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1584 1584
1585 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-height-1000.html"); 1585 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-height-1000.html");
1586 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1586 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1587 1587
1588 EXPECT_EQ(800, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->la youtSize().height()); 1588 EXPECT_EQ(800, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->la youtSize().height());
1589 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor()); 1589 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor());
1590 } 1590 }
1591 1591
1592 TEST_P(ParametrizedWebFrameTest, LayoutSize320Quirk) 1592 TEST_P(ParameterizedWebFrameTest, LayoutSize320Quirk)
1593 { 1593 {
1594 UseMockScrollbarSettings mockScrollbarSettings; 1594 UseMockScrollbarSettings mockScrollbarSettings;
1595 registerMockedHttpURLLoad("viewport/viewport-30.html"); 1595 registerMockedHttpURLLoad("viewport/viewport-30.html");
1596 1596
1597 FixedLayoutTestWebViewClient client; 1597 FixedLayoutTestWebViewClient client;
1598 client.m_screenInfo.deviceScaleFactor = 1; 1598 client.m_screenInfo.deviceScaleFactor = 1;
1599 int viewportWidth = 600; 1599 int viewportWidth = 600;
1600 int viewportHeight = 800; 1600 int viewportHeight = 800;
1601 1601
1602 FrameTestHelpers::WebViewHelper webViewHelper(this); 1602 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 document->setViewportDescription(description); 1634 document->setViewportDescription(description);
1635 webViewHelper.webView()->layout(); 1635 webViewHelper.webView()->layout();
1636 EXPECT_EQ(1000, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->l ayoutSize().height()); 1636 EXPECT_EQ(1000, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->l ayoutSize().height());
1637 1637
1638 description.maxHeight = Length(320, blink::Fixed); 1638 description.maxHeight = Length(320, blink::Fixed);
1639 document->setViewportDescription(description); 1639 document->setViewportDescription(description);
1640 webViewHelper.webView()->layout(); 1640 webViewHelper.webView()->layout();
1641 EXPECT_EQ(800, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->la youtSize().height()); 1641 EXPECT_EQ(800, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->la youtSize().height());
1642 } 1642 }
1643 1643
1644 TEST_P(ParametrizedWebFrameTest, ZeroValuesQuirk) 1644 TEST_P(ParameterizedWebFrameTest, ZeroValuesQuirk)
1645 { 1645 {
1646 UseMockScrollbarSettings mockScrollbarSettings; 1646 UseMockScrollbarSettings mockScrollbarSettings;
1647 registerMockedHttpURLLoad("viewport-zero-values.html"); 1647 registerMockedHttpURLLoad("viewport-zero-values.html");
1648 1648
1649 FixedLayoutTestWebViewClient client; 1649 FixedLayoutTestWebViewClient client;
1650 client.m_screenInfo.deviceScaleFactor = 1; 1650 client.m_screenInfo.deviceScaleFactor = 1;
1651 int viewportWidth = 640; 1651 int viewportWidth = 640;
1652 int viewportHeight = 480; 1652 int viewportHeight = 480;
1653 1653
1654 FrameTestHelpers::WebViewHelper webViewHelper(this); 1654 FrameTestHelpers::WebViewHelper webViewHelper(this);
1655 webViewHelper.initialize(true, 0, &client, enableViewportSettings); 1655 webViewHelper.initialize(true, 0, &client, enableViewportSettings);
1656 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true); 1656 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true);
1657 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1657 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1658 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1658 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1659 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-zero-values.html"); 1659 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-zero-values.html");
1660 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1660 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1661 1661
1662 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width()); 1662 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
1663 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1663 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1664 1664
1665 webViewHelper.webView()->settings()->setUseWideViewport(true); 1665 webViewHelper.webView()->settings()->setUseWideViewport(true);
1666 webViewHelper.webView()->layout(); 1666 webViewHelper.webView()->layout();
1667 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width()); 1667 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
1668 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1668 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1669 } 1669 }
1670 1670
1671 TEST_P(ParametrizedWebFrameTest, OverflowHiddenDisablesScrolling) 1671 TEST_P(ParameterizedWebFrameTest, OverflowHiddenDisablesScrolling)
1672 { 1672 {
1673 registerMockedHttpURLLoad("body-overflow-hidden.html"); 1673 registerMockedHttpURLLoad("body-overflow-hidden.html");
1674 1674
1675 FixedLayoutTestWebViewClient client; 1675 FixedLayoutTestWebViewClient client;
1676 client.m_screenInfo.deviceScaleFactor = 1; 1676 client.m_screenInfo.deviceScaleFactor = 1;
1677 int viewportWidth = 640; 1677 int viewportWidth = 640;
1678 int viewportHeight = 480; 1678 int viewportHeight = 480;
1679 1679
1680 FrameTestHelpers::WebViewHelper webViewHelper(this); 1680 FrameTestHelpers::WebViewHelper webViewHelper(this);
1681 webViewHelper.initialize(true, 0, &client); 1681 webViewHelper.initialize(true, 0, &client);
1682 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html"); 1682 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html");
1683 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1683 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1684 1684
1685 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView(); 1685 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView();
1686 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar)); 1686 EXPECT_FALSE(view->userInputScrollable(VerticalScrollbar));
1687 EXPECT_FALSE(view->userInputScrollable(HorizontalScrollbar)); 1687 EXPECT_FALSE(view->userInputScrollable(HorizontalScrollbar));
1688 } 1688 }
1689 1689
1690 TEST_P(ParametrizedWebFrameTest, OverflowHiddenDisablesScrollingWithSetCanHaveSc rollbars) 1690 TEST_P(ParameterizedWebFrameTest, OverflowHiddenDisablesScrollingWithSetCanHaveS crollbars)
1691 { 1691 {
1692 registerMockedHttpURLLoad("body-overflow-hidden-short.html"); 1692 registerMockedHttpURLLoad("body-overflow-hidden-short.html");
1693 1693
1694 FixedLayoutTestWebViewClient client; 1694 FixedLayoutTestWebViewClient client;
1695 client.m_screenInfo.deviceScaleFactor = 1; 1695 client.m_screenInfo.deviceScaleFactor = 1;
1696 int viewportWidth = 640; 1696 int viewportWidth = 640;
1697 int viewportHeight = 480; 1697 int viewportHeight = 480;
1698 1698
1699 FrameTestHelpers::WebViewHelper webViewHelper(this); 1699 FrameTestHelpers::WebViewHelper webViewHelper(this);
1700 webViewHelper.initialize(true, 0, &client); 1700 webViewHelper.initialize(true, 0, &client);
(...skipping 21 matching lines...) Expand all
1722 FrameTestHelpers::WebViewHelper webViewHelper; 1722 FrameTestHelpers::WebViewHelper webViewHelper;
1723 webViewHelper.initialize(true, 0, &client); 1723 webViewHelper.initialize(true, 0, &client);
1724 webViewHelper.webView()->settings()->setIgnoreMainFrameOverflowHiddenQuirk(t rue); 1724 webViewHelper.webView()->settings()->setIgnoreMainFrameOverflowHiddenQuirk(t rue);
1725 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html"); 1725 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html");
1726 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1726 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1727 1727
1728 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView(); 1728 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView();
1729 EXPECT_TRUE(view->userInputScrollable(VerticalScrollbar)); 1729 EXPECT_TRUE(view->userInputScrollable(VerticalScrollbar));
1730 } 1730 }
1731 1731
1732 TEST_P(ParametrizedWebFrameTest, NonZeroValuesNoQuirk) 1732 TEST_P(ParameterizedWebFrameTest, NonZeroValuesNoQuirk)
1733 { 1733 {
1734 UseMockScrollbarSettings mockScrollbarSettings; 1734 UseMockScrollbarSettings mockScrollbarSettings;
1735 registerMockedHttpURLLoad("viewport-nonzero-values.html"); 1735 registerMockedHttpURLLoad("viewport-nonzero-values.html");
1736 1736
1737 FixedLayoutTestWebViewClient client; 1737 FixedLayoutTestWebViewClient client;
1738 client.m_screenInfo.deviceScaleFactor = 1; 1738 client.m_screenInfo.deviceScaleFactor = 1;
1739 int viewportWidth = 640; 1739 int viewportWidth = 640;
1740 int viewportHeight = 480; 1740 int viewportHeight = 480;
1741 float expectedPageScaleFactor = 0.5f; 1741 float expectedPageScaleFactor = 0.5f;
1742 1742
1743 FrameTestHelpers::WebViewHelper webViewHelper(this); 1743 FrameTestHelpers::WebViewHelper webViewHelper(this);
1744 webViewHelper.initialize(true, 0, &client, enableViewportSettings); 1744 webViewHelper.initialize(true, 0, &client, enableViewportSettings);
1745 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true); 1745 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true);
1746 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1746 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1747 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-nonzero-values.html"); 1747 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-nonzero-values.html");
1748 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1748 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1749 1749
1750 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width()); 1750 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width());
1751 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1751 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1752 1752
1753 webViewHelper.webView()->settings()->setUseWideViewport(true); 1753 webViewHelper.webView()->settings()->setUseWideViewport(true);
1754 webViewHelper.webView()->layout(); 1754 webViewHelper.webView()->layout();
1755 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width()); 1755 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width());
1756 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1756 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1757 } 1757 }
1758 1758
1759 TEST_P(ParametrizedWebFrameTest, setPageScaleFactorDoesNotLayout) 1759 TEST_P(ParameterizedWebFrameTest, setPageScaleFactorDoesNotLayout)
1760 { 1760 {
1761 UseMockScrollbarSettings mockScrollbarSettings; 1761 UseMockScrollbarSettings mockScrollbarSettings;
1762 registerMockedHttpURLLoad("fixed_layout.html"); 1762 registerMockedHttpURLLoad("fixed_layout.html");
1763 1763
1764 FixedLayoutTestWebViewClient client; 1764 FixedLayoutTestWebViewClient client;
1765 client.m_screenInfo.deviceScaleFactor = 1; 1765 client.m_screenInfo.deviceScaleFactor = 1;
1766 // Small viewport to ensure there are always scrollbars. 1766 // Small viewport to ensure there are always scrollbars.
1767 int viewportWidth = 64; 1767 int viewportWidth = 64;
1768 int viewportHeight = 48; 1768 int viewportHeight = 48;
1769 1769
1770 FrameTestHelpers::WebViewHelper webViewHelper(this); 1770 FrameTestHelpers::WebViewHelper webViewHelper(this);
1771 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 1771 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
1772 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1772 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1773 webViewHelper.webView()->layout(); 1773 webViewHelper.webView()->layout();
1774 1774
1775 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount(); 1775 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount();
1776 webViewHelper.webViewImpl()->setPageScaleFactor(3); 1776 webViewHelper.webViewImpl()->setPageScaleFactor(3);
1777 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout()); 1777 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout());
1778 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount()); 1778 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount());
1779 } 1779 }
1780 1780
1781 TEST_P(ParametrizedWebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNotL ayout) 1781 TEST_P(ParameterizedWebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNot Layout)
1782 { 1782 {
1783 UseMockScrollbarSettings mockScrollbarSettings; 1783 UseMockScrollbarSettings mockScrollbarSettings;
1784 1784
1785 registerMockedHttpURLLoad("fixed_layout.html"); 1785 registerMockedHttpURLLoad("fixed_layout.html");
1786 1786
1787 FixedLayoutTestWebViewClient client; 1787 FixedLayoutTestWebViewClient client;
1788 client.m_screenInfo.deviceScaleFactor = 1; 1788 client.m_screenInfo.deviceScaleFactor = 1;
1789 int viewportWidth = 640; 1789 int viewportWidth = 640;
1790 int viewportHeight = 480; 1790 int viewportHeight = 480;
1791 1791
1792 FrameTestHelpers::WebViewHelper webViewHelper(this); 1792 FrameTestHelpers::WebViewHelper webViewHelper(this);
1793 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 1793 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
1794 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1794 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1795 webViewHelper.webView()->layout(); 1795 webViewHelper.webView()->layout();
1796 1796
1797 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount(); 1797 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount();
1798 webViewHelper.webViewImpl()->setPageScaleFactor(30); 1798 webViewHelper.webViewImpl()->setPageScaleFactor(30);
1799 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout()); 1799 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout());
1800 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount()); 1800 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount());
1801 1801
1802 } 1802 }
1803 1803
1804 TEST_P(ParametrizedWebFrameTest, pageScaleFactorWrittenToHistoryItem) 1804 TEST_P(ParameterizedWebFrameTest, pageScaleFactorWrittenToHistoryItem)
1805 { 1805 {
1806 UseMockScrollbarSettings mockScrollbarSettings; 1806 UseMockScrollbarSettings mockScrollbarSettings;
1807 registerMockedHttpURLLoad("fixed_layout.html"); 1807 registerMockedHttpURLLoad("fixed_layout.html");
1808 1808
1809 FixedLayoutTestWebViewClient client; 1809 FixedLayoutTestWebViewClient client;
1810 client.m_screenInfo.deviceScaleFactor = 1; 1810 client.m_screenInfo.deviceScaleFactor = 1;
1811 int viewportWidth = 640; 1811 int viewportWidth = 640;
1812 int viewportHeight = 480; 1812 int viewportHeight = 480;
1813 1813
1814 FrameTestHelpers::WebViewHelper webViewHelper(this); 1814 FrameTestHelpers::WebViewHelper webViewHelper(this);
1815 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 1815 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
1816 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1816 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1817 webViewHelper.webView()->layout(); 1817 webViewHelper.webView()->layout();
1818 1818
1819 webViewHelper.webView()->setPageScaleFactor(3); 1819 webViewHelper.webView()->setPageScaleFactor(3);
1820 EXPECT_EQ(3, toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())- >loader().currentItem()->pageScaleFactor()); 1820 EXPECT_EQ(3, toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())- >loader().currentItem()->pageScaleFactor());
1821 } 1821 }
1822 1822
1823 TEST_P(ParametrizedWebFrameTest, initialScaleWrittenToHistoryItem) 1823 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem)
1824 { 1824 {
1825 UseMockScrollbarSettings mockScrollbarSettings; 1825 UseMockScrollbarSettings mockScrollbarSettings;
1826 registerMockedHttpURLLoad("fixed_layout.html"); 1826 registerMockedHttpURLLoad("fixed_layout.html");
1827 1827
1828 FixedLayoutTestWebViewClient client; 1828 FixedLayoutTestWebViewClient client;
1829 client.m_screenInfo.deviceScaleFactor = 1; 1829 client.m_screenInfo.deviceScaleFactor = 1;
1830 int viewportWidth = 640; 1830 int viewportWidth = 640;
1831 int viewportHeight = 480; 1831 int viewportHeight = 480;
1832 1832
1833 FrameTestHelpers::WebViewHelper webViewHelper(this); 1833 FrameTestHelpers::WebViewHelper webViewHelper(this);
1834 webViewHelper.initialize(true, 0, &client, enableViewportSettings); 1834 webViewHelper.initialize(true, 0, &client, enableViewportSettings);
1835 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 1835 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
1836 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html"); 1836 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html");
1837 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1837 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1838 webViewHelper.webView()->layout(); 1838 webViewHelper.webView()->layout();
1839 1839
1840 int defaultFixedLayoutWidth = 980; 1840 int defaultFixedLayoutWidth = 980;
1841 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th; 1841 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th;
1842 EXPECT_EQ(minimumPageScaleFactor, toLocalFrame(webViewHelper.webViewImpl()-> page()->mainFrame())->loader().currentItem()->pageScaleFactor()); 1842 EXPECT_EQ(minimumPageScaleFactor, toLocalFrame(webViewHelper.webViewImpl()-> page()->mainFrame())->loader().currentItem()->pageScaleFactor());
1843 } 1843 }
1844 1844
1845 TEST_P(ParametrizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView) 1845 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView)
1846 { 1846 {
1847 UseMockScrollbarSettings mockScrollbarSettings; 1847 UseMockScrollbarSettings mockScrollbarSettings;
1848 registerMockedHttpURLLoad("large-div.html"); 1848 registerMockedHttpURLLoad("large-div.html");
1849 1849
1850 FixedLayoutTestWebViewClient client; 1850 FixedLayoutTestWebViewClient client;
1851 client.m_screenInfo.deviceScaleFactor = 1; 1851 client.m_screenInfo.deviceScaleFactor = 1;
1852 // Small viewport to ensure there are always scrollbars. 1852 // Small viewport to ensure there are always scrollbars.
1853 int viewportWidth = 64; 1853 int viewportWidth = 64;
1854 int viewportHeight = 48; 1854 int viewportHeight = 48;
1855 1855
(...skipping 20 matching lines...) Expand all
1876 1876
1877 IntSize unscaledSizeMinusScrollbar = view->visibleContentSize(ExcludeScrollb ars); 1877 IntSize unscaledSizeMinusScrollbar = view->visibleContentSize(ExcludeScrollb ars);
1878 EXPECT_EQ(viewportWidthMinusScrollbar, unscaledSizeMinusScrollbar.width()); 1878 EXPECT_EQ(viewportWidthMinusScrollbar, unscaledSizeMinusScrollbar.width());
1879 EXPECT_EQ(viewportHeightMinusScrollbar, unscaledSizeMinusScrollbar.height()) ; 1879 EXPECT_EQ(viewportHeightMinusScrollbar, unscaledSizeMinusScrollbar.height()) ;
1880 1880
1881 IntSize frameViewSize = view->visibleContentRect().size(); 1881 IntSize frameViewSize = view->visibleContentRect().size();
1882 EXPECT_EQ(viewportWidthMinusScrollbar, frameViewSize.width()); 1882 EXPECT_EQ(viewportWidthMinusScrollbar, frameViewSize.width());
1883 EXPECT_EQ(viewportHeightMinusScrollbar, frameViewSize.height()); 1883 EXPECT_EQ(viewportHeightMinusScrollbar, frameViewSize.height());
1884 } 1884 }
1885 1885
1886 TEST_P(ParametrizedWebFrameTest, pageScaleFactorDoesNotApplyCssTransform) 1886 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesNotApplyCssTransform)
1887 { 1887 {
1888 UseMockScrollbarSettings mockScrollbarSettings; 1888 UseMockScrollbarSettings mockScrollbarSettings;
1889 registerMockedHttpURLLoad("fixed_layout.html"); 1889 registerMockedHttpURLLoad("fixed_layout.html");
1890 1890
1891 FixedLayoutTestWebViewClient client; 1891 FixedLayoutTestWebViewClient client;
1892 client.m_screenInfo.deviceScaleFactor = 1; 1892 client.m_screenInfo.deviceScaleFactor = 1;
1893 int viewportWidth = 640; 1893 int viewportWidth = 640;
1894 int viewportHeight = 480; 1894 int viewportHeight = 480;
1895 1895
1896 FrameTestHelpers::WebViewHelper webViewHelper(this); 1896 FrameTestHelpers::WebViewHelper webViewHelper(this);
1897 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 1897 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
1898 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1898 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1899 webViewHelper.webView()->layout(); 1899 webViewHelper.webView()->layout();
1900 1900
1901 webViewHelper.webView()->setPageScaleFactor(2); 1901 webViewHelper.webView()->setPageScaleFactor(2);
1902 1902
1903 EXPECT_EQ(980, toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame() )->contentLayoutObject()->unscaledDocumentRect().width()); 1903 EXPECT_EQ(980, toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame() )->contentLayoutObject()->unscaledDocumentRect().width());
1904 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 1904 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
1905 } 1905 }
1906 1906
1907 TEST_P(ParametrizedWebFrameTest, targetDensityDpiHigh) 1907 TEST_P(ParameterizedWebFrameTest, targetDensityDpiHigh)
1908 { 1908 {
1909 UseMockScrollbarSettings mockScrollbarSettings; 1909 UseMockScrollbarSettings mockScrollbarSettings;
1910 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); 1910 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html");
1911 1911
1912 FixedLayoutTestWebViewClient client; 1912 FixedLayoutTestWebViewClient client;
1913 // high-dpi = 240 1913 // high-dpi = 240
1914 float targetDpi = 240.0f; 1914 float targetDpi = 240.0f;
1915 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1915 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
1916 int viewportWidth = 640; 1916 int viewportWidth = 640;
1917 int viewportHeight = 480; 1917 int viewportHeight = 480;
(...skipping 11 matching lines...) Expand all
1929 1929
1930 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce 1930 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce
1931 // physical pixels. 1931 // physical pixels.
1932 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi; 1932 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi;
1933 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, webViewHelper.webViewI mpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 1933 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, webViewHelper.webViewI mpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
1934 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, webViewHelper.webView Impl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 1934 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, webViewHelper.webView Impl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
1935 EXPECT_NEAR(1.0f / densityDpiScaleRatio, webViewHelper.webView()->pageSc aleFactor(), 0.01f); 1935 EXPECT_NEAR(1.0f / densityDpiScaleRatio, webViewHelper.webView()->pageSc aleFactor(), 0.01f);
1936 } 1936 }
1937 } 1937 }
1938 1938
1939 TEST_P(ParametrizedWebFrameTest, targetDensityDpiDevice) 1939 TEST_P(ParameterizedWebFrameTest, targetDensityDpiDevice)
1940 { 1940 {
1941 UseMockScrollbarSettings mockScrollbarSettings; 1941 UseMockScrollbarSettings mockScrollbarSettings;
1942 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html"); 1942 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html");
1943 1943
1944 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1944 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
1945 1945
1946 FixedLayoutTestWebViewClient client; 1946 FixedLayoutTestWebViewClient client;
1947 int viewportWidth = 640; 1947 int viewportWidth = 640;
1948 int viewportHeight = 480; 1948 int viewportHeight = 480;
1949 1949
1950 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 1950 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
1951 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 1951 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
1952 1952
1953 FrameTestHelpers::WebViewHelper webViewHelper(this); 1953 FrameTestHelpers::WebViewHelper webViewHelper(this);
1954 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device.html", true, 0, &client, enableViewportSettings); 1954 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device.html", true, 0, &client, enableViewportSettings);
1955 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1955 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1956 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 1956 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
1957 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1957 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1958 1958
1959 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webVi ewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f ); 1959 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webVi ewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f );
1960 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webV iewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1. 0f); 1960 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webV iewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1. 0f);
1961 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper. webView()->pageScaleFactor(), 0.01f); 1961 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper. webView()->pageScaleFactor(), 0.01f);
1962 } 1962 }
1963 } 1963 }
1964 1964
1965 TEST_P(ParametrizedWebFrameTest, targetDensityDpiDeviceAndFixedWidth) 1965 TEST_P(ParameterizedWebFrameTest, targetDensityDpiDeviceAndFixedWidth)
1966 { 1966 {
1967 UseMockScrollbarSettings mockScrollbarSettings; 1967 UseMockScrollbarSettings mockScrollbarSettings;
1968 registerMockedHttpURLLoad("viewport-target-densitydpi-device-and-fixed-width .html"); 1968 registerMockedHttpURLLoad("viewport-target-densitydpi-device-and-fixed-width .html");
1969 1969
1970 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1970 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
1971 1971
1972 FixedLayoutTestWebViewClient client; 1972 FixedLayoutTestWebViewClient client;
1973 int viewportWidth = 640; 1973 int viewportWidth = 640;
1974 int viewportHeight = 480; 1974 int viewportHeight = 480;
1975 1975
1976 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 1976 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
1977 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 1977 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
1978 1978
1979 FrameTestHelpers::WebViewHelper webViewHelper(this); 1979 FrameTestHelpers::WebViewHelper webViewHelper(this);
1980 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device-and-fixed-width.html", true, 0, &client, enableViewportSettings); 1980 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device-and-fixed-width.html", true, 0, &client, enableViewportSettings);
1981 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1981 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1982 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 1982 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
1983 webViewHelper.webView()->settings()->setUseWideViewport(true); 1983 webViewHelper.webView()->settings()->setUseWideViewport(true);
1984 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1984 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1985 1985
1986 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()- >frameView()->layoutSize().width(), 1.0f); 1986 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()- >frameView()->layoutSize().width(), 1.0f);
1987 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl() ->frameView()->layoutSize().height(), 1.0f); 1987 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl() ->frameView()->layoutSize().height(), 1.0f);
1988 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 1988 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
1989 } 1989 }
1990 } 1990 }
1991 1991
1992 TEST_P(ParametrizedWebFrameTest, NoWideViewportAndScaleLessThanOne) 1992 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndScaleLessThanOne)
1993 { 1993 {
1994 UseMockScrollbarSettings mockScrollbarSettings; 1994 UseMockScrollbarSettings mockScrollbarSettings;
1995 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1.html"); 1995 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1.html");
1996 1996
1997 FixedLayoutTestWebViewClient client; 1997 FixedLayoutTestWebViewClient client;
1998 client.m_screenInfo.deviceScaleFactor = 1.33f; 1998 client.m_screenInfo.deviceScaleFactor = 1.33f;
1999 int viewportWidth = 640; 1999 int viewportWidth = 640;
2000 int viewportHeight = 480; 2000 int viewportHeight = 480;
2001 2001
2002 FrameTestHelpers::WebViewHelper webViewHelper(this); 2002 FrameTestHelpers::WebViewHelper webViewHelper(this);
2003 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1.html", true, 0, &client, enableViewportSettings); 2003 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1.html", true, 0, &client, enableViewportSettings);
2004 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 2004 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
2005 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2005 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2006 webViewHelper.webView()->settings()->setUseWideViewport(false); 2006 webViewHelper.webView()->settings()->setUseWideViewport(false);
2007 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2007 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2008 webViewHelper.webView()->layout(); 2008 webViewHelper.webView()->layout();
2009 2009
2010 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2010 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2011 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2011 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2012 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 2012 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
2013 } 2013 }
2014 2014
2015 TEST_P(ParametrizedWebFrameTest, NoWideViewportAndScaleLessThanOneWithDeviceWidt h) 2015 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndScaleLessThanOneWithDeviceWid th)
2016 { 2016 {
2017 UseMockScrollbarSettings mockScrollbarSettings; 2017 UseMockScrollbarSettings mockScrollbarSettings;
2018 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1-device-width.h tml"); 2018 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1-device-width.h tml");
2019 2019
2020 FixedLayoutTestWebViewClient client; 2020 FixedLayoutTestWebViewClient client;
2021 client.m_screenInfo.deviceScaleFactor = 1.33f; 2021 client.m_screenInfo.deviceScaleFactor = 1.33f;
2022 int viewportWidth = 640; 2022 int viewportWidth = 640;
2023 int viewportHeight = 480; 2023 int viewportHeight = 480;
2024 2024
2025 FrameTestHelpers::WebViewHelper webViewHelper(this); 2025 FrameTestHelpers::WebViewHelper webViewHelper(this);
2026 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1-device-width.html", true, 0, &client, enableViewportSettings); 2026 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1-device-width.html", true, 0, &client, enableViewportSettings);
2027 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 2027 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
2028 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2028 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2029 webViewHelper.webView()->settings()->setUseWideViewport(false); 2029 webViewHelper.webView()->settings()->setUseWideViewport(false);
2030 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2030 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2031 webViewHelper.webView()->layout(); 2031 webViewHelper.webView()->layout();
2032 2032
2033 const float pageZoom = 0.25f; 2033 const float pageZoom = 0.25f;
2034 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor / pageZoom , webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width( ), 1.0f); 2034 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor / pageZoom , webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width( ), 1.0f);
2035 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor / pageZoo m, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().heigh t(), 1.0f); 2035 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor / pageZoo m, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().heigh t(), 1.0f);
2036 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 2036 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
2037 } 2037 }
2038 2038
2039 TEST_P(ParametrizedWebFrameTest, NoWideViewportAndNoViewportWithInitialPageScale Override) 2039 TEST_P(ParameterizedWebFrameTest, NoWideViewportAndNoViewportWithInitialPageScal eOverride)
2040 { 2040 {
2041 UseMockScrollbarSettings mockScrollbarSettings; 2041 UseMockScrollbarSettings mockScrollbarSettings;
2042 registerMockedHttpURLLoad("large-div.html"); 2042 registerMockedHttpURLLoad("large-div.html");
2043 2043
2044 FixedLayoutTestWebViewClient client; 2044 FixedLayoutTestWebViewClient client;
2045 int viewportWidth = 640; 2045 int viewportWidth = 640;
2046 int viewportHeight = 480; 2046 int viewportHeight = 480;
2047 float enforcedPageScaleFactor = 5.0f; 2047 float enforcedPageScaleFactor = 5.0f;
2048 2048
2049 FrameTestHelpers::WebViewHelper webViewHelper(this); 2049 FrameTestHelpers::WebViewHelper webViewHelper(this);
2050 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt, enableViewportSettings); 2050 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt, enableViewportSettings);
2051 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2051 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2052 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2052 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2053 webViewHelper.webView()->settings()->setUseWideViewport(false); 2053 webViewHelper.webView()->settings()->setUseWideViewport(false);
2054 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 2054 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
2055 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2055 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2056 webViewHelper.webView()->layout(); 2056 webViewHelper.webView()->layout();
2057 2057
2058 EXPECT_NEAR(viewportWidth / enforcedPageScaleFactor, webViewHelper.webViewIm pl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2058 EXPECT_NEAR(viewportWidth / enforcedPageScaleFactor, webViewHelper.webViewIm pl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2059 EXPECT_NEAR(viewportHeight / enforcedPageScaleFactor, webViewHelper.webViewI mpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2059 EXPECT_NEAR(viewportHeight / enforcedPageScaleFactor, webViewHelper.webViewI mpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2060 EXPECT_NEAR(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFacto r(), 0.01f); 2060 EXPECT_NEAR(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFacto r(), 0.01f);
2061 } 2061 }
2062 2062
2063 TEST_P(ParametrizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScale) 2063 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScale)
2064 { 2064 {
2065 UseMockScrollbarSettings mockScrollbarSettings; 2065 UseMockScrollbarSettings mockScrollbarSettings;
2066 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" ); 2066 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" );
2067 2067
2068 FixedLayoutTestWebViewClient client; 2068 FixedLayoutTestWebViewClient client;
2069 int viewportWidth = 640; 2069 int viewportWidth = 640;
2070 int viewportHeight = 480; 2070 int viewportHeight = 480;
2071 2071
2072 FrameTestHelpers::WebViewHelper webViewHelper(this); 2072 FrameTestHelpers::WebViewHelper webViewHelper(this);
2073 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, 0, &client, enableViewportSettings); 2073 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, 0, &client, enableViewportSettings);
2074 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e); 2074 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e);
2075 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2075 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2076 webViewHelper.webView()->layout(); 2076 webViewHelper.webView()->layout();
2077 2077
2078 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutSize().width(), 1.0f); 2078 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutSize().width(), 1.0f);
2079 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fr ameView()->layoutSize().height(), 1.0f); 2079 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fr ameView()->layoutSize().height(), 1.0f);
2080 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 2080 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
2081 } 2081 }
2082 2082
2083 TEST_P(ParametrizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForNonWi deViewport) 2083 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForNonW ideViewport)
2084 { 2084 {
2085 UseMockScrollbarSettings mockScrollbarSettings; 2085 UseMockScrollbarSettings mockScrollbarSettings;
2086 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" ); 2086 registerMockedHttpURLLoad("viewport-initial-scale-and-user-scalable-no.html" );
2087 2087
2088 FixedLayoutTestWebViewClient client; 2088 FixedLayoutTestWebViewClient client;
2089 client.m_screenInfo.deviceScaleFactor = 1.33f; 2089 client.m_screenInfo.deviceScaleFactor = 1.33f;
2090 int viewportWidth = 640; 2090 int viewportWidth = 640;
2091 int viewportHeight = 480; 2091 int viewportHeight = 480;
2092 2092
2093 FrameTestHelpers::WebViewHelper webViewHelper(this); 2093 FrameTestHelpers::WebViewHelper webViewHelper(this);
2094 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, 0, &client, enableViewportSettings); 2094 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-and-user -scalable-no.html", true, 0, &client, enableViewportSettings);
2095 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 2095 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
2096 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e); 2096 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e);
2097 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2097 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2098 webViewHelper.webView()->settings()->setUseWideViewport(false); 2098 webViewHelper.webView()->settings()->setUseWideViewport(false);
2099 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2099 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2100 webViewHelper.webView()->layout(); 2100 webViewHelper.webView()->layout();
2101 2101
2102 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f); 2102 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
2103 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f); 2103 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
2104 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 2104 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
2105 } 2105 }
2106 2106
2107 TEST_P(ParametrizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForWideV iewport) 2107 TEST_P(ParameterizedWebFrameTest, NoUserScalableQuirkIgnoresViewportScaleForWide Viewport)
2108 { 2108 {
2109 UseMockScrollbarSettings mockScrollbarSettings; 2109 UseMockScrollbarSettings mockScrollbarSettings;
2110 registerMockedHttpURLLoad("viewport-2x-initial-scale-non-user-scalable.html" ); 2110 registerMockedHttpURLLoad("viewport-2x-initial-scale-non-user-scalable.html" );
2111 2111
2112 FixedLayoutTestWebViewClient client; 2112 FixedLayoutTestWebViewClient client;
2113 int viewportWidth = 640; 2113 int viewportWidth = 640;
2114 int viewportHeight = 480; 2114 int viewportHeight = 480;
2115 2115
2116 FrameTestHelpers::WebViewHelper webViewHelper(this); 2116 FrameTestHelpers::WebViewHelper webViewHelper(this);
2117 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale-non-u ser-scalable.html", true, 0, &client, enableViewportSettings); 2117 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale-non-u ser-scalable.html", true, 0, &client, enableViewportSettings);
2118 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e); 2118 webViewHelper.webView()->settings()->setViewportMetaNonUserScalableQuirk(tru e);
2119 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 2119 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
2120 webViewHelper.webView()->settings()->setUseWideViewport(true); 2120 webViewHelper.webView()->settings()->setUseWideViewport(true);
2121 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2121 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2122 2122
2123 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutSize().width(), 1.0f); 2123 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutSize().width(), 1.0f);
2124 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fr ameView()->layoutSize().height(), 1.0f); 2124 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fr ameView()->layoutSize().height(), 1.0f);
2125 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 2125 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
2126 } 2126 }
2127 2127
2128 TEST_P(ParametrizedWebFrameTest, DesktopPageCanBeZoomedInWhenWideViewportIsTurne dOff) 2128 TEST_P(ParameterizedWebFrameTest, DesktopPageCanBeZoomedInWhenWideViewportIsTurn edOff)
2129 { 2129 {
2130 UseMockScrollbarSettings mockScrollbarSettings; 2130 UseMockScrollbarSettings mockScrollbarSettings;
2131 registerMockedHttpURLLoad("no_viewport_tag.html"); 2131 registerMockedHttpURLLoad("no_viewport_tag.html");
2132 2132
2133 FixedLayoutTestWebViewClient client; 2133 FixedLayoutTestWebViewClient client;
2134 int viewportWidth = 640; 2134 int viewportWidth = 640;
2135 int viewportHeight = 480; 2135 int viewportHeight = 480;
2136 2136
2137 FrameTestHelpers::WebViewHelper webViewHelper(this); 2137 FrameTestHelpers::WebViewHelper webViewHelper(this);
2138 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client, enableViewportSettings); 2138 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client, enableViewportSettings);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
2248 const char* url = "resize_scroll_fixed_layout.html"; 2248 const char* url = "resize_scroll_fixed_layout.html";
2249 const float initialPageScaleFactor = 2; 2249 const float initialPageScaleFactor = 2;
2250 const WebSize scrollOffset(200, 400); 2250 const WebSize scrollOffset(200, 400);
2251 const WebSize viewportSize(320, 240); 2251 const WebSize viewportSize(320, 240);
2252 const bool shouldScaleRelativeToViewportWidth = true; 2252 const bool shouldScaleRelativeToViewportWidth = true;
2253 2253
2254 testResizeYieldsCorrectScrollAndScale( 2254 testResizeYieldsCorrectScrollAndScale(
2255 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela tiveToViewportWidth); 2255 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela tiveToViewportWidth);
2256 } 2256 }
2257 2257
2258 TEST_P(ParametrizedWebFrameTest, pageScaleFactorUpdatesScrollbars) 2258 TEST_P(ParameterizedWebFrameTest, pageScaleFactorUpdatesScrollbars)
2259 { 2259 {
2260 UseMockScrollbarSettings mockScrollbarSettings; 2260 UseMockScrollbarSettings mockScrollbarSettings;
2261 registerMockedHttpURLLoad("fixed_layout.html"); 2261 registerMockedHttpURLLoad("fixed_layout.html");
2262 2262
2263 FixedLayoutTestWebViewClient client; 2263 FixedLayoutTestWebViewClient client;
2264 client.m_screenInfo.deviceScaleFactor = 1; 2264 client.m_screenInfo.deviceScaleFactor = 1;
2265 int viewportWidth = 640; 2265 int viewportWidth = 640;
2266 int viewportHeight = 480; 2266 int viewportHeight = 480;
2267 2267
2268 FrameTestHelpers::WebViewHelper webViewHelper(this); 2268 FrameTestHelpers::WebViewHelper webViewHelper(this);
2269 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings); 2269 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient, enableViewportSettings);
2270 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2270 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2271 webViewHelper.webView()->layout(); 2271 webViewHelper.webView()->layout();
2272 2272
2273 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView(); 2273 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView();
2274 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width()); 2274 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width());
2275 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height()); 2275 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height());
2276 2276
2277 webViewHelper.webView()->setPageScaleFactor(10); 2277 webViewHelper.webView()->setPageScaleFactor(10);
2278 2278
2279 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width()); 2279 EXPECT_EQ(view->scrollSize(HorizontalScrollbar), view->contentsSize().width( ) - view->visibleContentRect().width());
2280 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height()); 2280 EXPECT_EQ(view->scrollSize(VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height());
2281 } 2281 }
2282 2282
2283 TEST_P(ParametrizedWebFrameTest, CanOverrideScaleLimits) 2283 TEST_P(ParameterizedWebFrameTest, CanOverrideScaleLimits)
2284 { 2284 {
2285 UseMockScrollbarSettings mockScrollbarSettings; 2285 UseMockScrollbarSettings mockScrollbarSettings;
2286 2286
2287 registerMockedHttpURLLoad("no_scale_for_you.html"); 2287 registerMockedHttpURLLoad("no_scale_for_you.html");
2288 2288
2289 FixedLayoutTestWebViewClient client; 2289 FixedLayoutTestWebViewClient client;
2290 client.m_screenInfo.deviceScaleFactor = 1; 2290 client.m_screenInfo.deviceScaleFactor = 1;
2291 int viewportWidth = 640; 2291 int viewportWidth = 640;
2292 int viewportHeight = 480; 2292 int viewportHeight = 480;
2293 2293
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2364 simulatePageScale(webViewImpl, scale); 2364 simulatePageScale(webViewImpl, scale);
2365 } 2365 }
2366 2366
2367 void simulateDoubleTap(WebViewImpl* webViewImpl, WebPoint& point, float& scale) 2367 void simulateDoubleTap(WebViewImpl* webViewImpl, WebPoint& point, float& scale)
2368 { 2368 {
2369 webViewImpl->animateDoubleTapZoom(point); 2369 webViewImpl->animateDoubleTapZoom(point);
2370 EXPECT_TRUE(webViewImpl->fakeDoubleTapAnimationPendingForTesting()); 2370 EXPECT_TRUE(webViewImpl->fakeDoubleTapAnimationPendingForTesting());
2371 simulatePageScale(webViewImpl, scale); 2371 simulatePageScale(webViewImpl, scale);
2372 } 2372 }
2373 2373
2374 TEST_P(ParametrizedWebFrameTest, DivAutoZoomParamsTest) 2374 TEST_P(ParameterizedWebFrameTest, DivAutoZoomParamsTest)
2375 { 2375 {
2376 registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html"); 2376 registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html");
2377 2377
2378 const float deviceScaleFactor = 2.0f; 2378 const float deviceScaleFactor = 2.0f;
2379 int viewportWidth = 640 / deviceScaleFactor; 2379 int viewportWidth = 640 / deviceScaleFactor;
2380 int viewportHeight = 1280 / deviceScaleFactor; 2380 int viewportHeight = 1280 / deviceScaleFactor;
2381 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2381 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2382 FrameTestHelpers::WebViewHelper webViewHelper(this); 2382 FrameTestHelpers::WebViewHelper webViewHelper(this);
2383 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_di v_test.html", false, 0, 0, configureAndroid); 2383 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_di v_test.html", false, 0, 0, configureAndroid);
2384 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2384 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2417 2417
2418 // Test double-tap zooming into tall div. 2418 // Test double-tap zooming into tall div.
2419 WebRect tallBlockBound = webViewHelper.webViewImpl()->computeBlockBound(doub leTapPointTall, false); 2419 WebRect tallBlockBound = webViewHelper.webViewImpl()->computeBlockBound(doub leTapPointTall, false);
2420 webViewHelper.webViewImpl()->computeScaleAndScrollForBlockRect(WebPoint(doub leTapPointTall.x, doubleTapPointTall.y), tallBlockBound, touchPointPadding, doub leTapZoomAlreadyLegibleScale, scale, scroll); 2420 webViewHelper.webViewImpl()->computeScaleAndScrollForBlockRect(WebPoint(doub leTapPointTall.x, doubleTapPointTall.y), tallBlockBound, touchPointPadding, doub leTapZoomAlreadyLegibleScale, scale, scroll);
2421 // The div should start at the top left of the viewport. 2421 // The div should start at the top left of the viewport.
2422 EXPECT_NEAR(viewportWidth / (float) tallDiv.width, scale, 0.1); 2422 EXPECT_NEAR(viewportWidth / (float) tallDiv.width, scale, 0.1);
2423 EXPECT_NEAR(tallDiv.x, scroll.x, 20); 2423 EXPECT_NEAR(tallDiv.x, scroll.x, 20);
2424 EXPECT_NEAR(tallDiv.y, scroll.y, 20); 2424 EXPECT_NEAR(tallDiv.y, scroll.y, 20);
2425 } 2425 }
2426 2426
2427 TEST_P(ParametrizedWebFrameTest, DivAutoZoomWideDivTest) 2427 TEST_P(ParameterizedWebFrameTest, DivAutoZoomWideDivTest)
2428 { 2428 {
2429 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html"); 2429 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html");
2430 2430
2431 const float deviceScaleFactor = 2.0f; 2431 const float deviceScaleFactor = 2.0f;
2432 int viewportWidth = 640 / deviceScaleFactor; 2432 int viewportWidth = 640 / deviceScaleFactor;
2433 int viewportHeight = 1280 / deviceScaleFactor; 2433 int viewportHeight = 1280 / deviceScaleFactor;
2434 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2434 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2435 FrameTestHelpers::WebViewHelper webViewHelper(this); 2435 FrameTestHelpers::WebViewHelper webViewHelper(this);
2436 webViewHelper.initializeAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test .html", false, 0, 0, configureAndroid); 2436 webViewHelper.initializeAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test .html", false, 0, 0, configureAndroid);
2437 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2437 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2438 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2438 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2439 webViewHelper.webView()->setPageScaleFactor(1.0f); 2439 webViewHelper.webView()->setPageScaleFactor(1.0f);
2440 webViewHelper.webView()->layout(); 2440 webViewHelper.webView()->layout();
2441 2441
2442 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 2442 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
2443 2443
2444 float doubleTapZoomAlreadyLegibleScale = webViewHelper.webViewImpl()->minimu mPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio; 2444 float doubleTapZoomAlreadyLegibleScale = webViewHelper.webViewImpl()->minimu mPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
2445 2445
2446 WebRect div(0, 100, viewportWidth, 150); 2446 WebRect div(0, 100, viewportWidth, 150);
2447 WebPoint point(div.x + 50, div.y + 50); 2447 WebPoint point(div.x + 50, div.y + 50);
2448 float scale; 2448 float scale;
2449 setScaleAndScrollAndLayout(webViewHelper.webViewImpl(), WebPoint(0, 0), (web ViewHelper.webViewImpl()->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyL egibleRatio) / 2); 2449 setScaleAndScrollAndLayout(webViewHelper.webViewImpl(), WebPoint(0, 0), (web ViewHelper.webViewImpl()->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyL egibleRatio) / 2);
2450 2450
2451 simulateDoubleTap(webViewHelper.webViewImpl(), point, scale); 2451 simulateDoubleTap(webViewHelper.webViewImpl(), point, scale);
2452 EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale); 2452 EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
2453 simulateDoubleTap(webViewHelper.webViewImpl(), point, scale); 2453 simulateDoubleTap(webViewHelper.webViewImpl(), point, scale);
2454 EXPECT_FLOAT_EQ(webViewHelper.webViewImpl()->minimumPageScaleFactor(), scale ); 2454 EXPECT_FLOAT_EQ(webViewHelper.webViewImpl()->minimumPageScaleFactor(), scale );
2455 } 2455 }
2456 2456
2457 TEST_P(ParametrizedWebFrameTest, DivAutoZoomVeryTallTest) 2457 TEST_P(ParameterizedWebFrameTest, DivAutoZoomVeryTallTest)
2458 { 2458 {
2459 // When a block is taller than the viewport and a zoom targets a lower part 2459 // When a block is taller than the viewport and a zoom targets a lower part
2460 // of it, then we should keep the target point onscreen instead of snapping 2460 // of it, then we should keep the target point onscreen instead of snapping
2461 // back up the top of the block. 2461 // back up the top of the block.
2462 registerMockedHttpURLLoad("very_tall_div.html"); 2462 registerMockedHttpURLLoad("very_tall_div.html");
2463 2463
2464 const float deviceScaleFactor = 2.0f; 2464 const float deviceScaleFactor = 2.0f;
2465 int viewportWidth = 640 / deviceScaleFactor; 2465 int viewportWidth = 640 / deviceScaleFactor;
2466 int viewportHeight = 1280 / deviceScaleFactor; 2466 int viewportHeight = 1280 / deviceScaleFactor;
2467 FrameTestHelpers::WebViewHelper webViewHelper(this); 2467 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
2745 doubleTapZoomAlreadyLegibleScale = webViewHelper.webViewImpl()->minimumPageS caleFactor() * doubleTapZoomAlreadyLegibleRatio; 2745 doubleTapZoomAlreadyLegibleScale = webViewHelper.webViewImpl()->minimumPageS caleFactor() * doubleTapZoomAlreadyLegibleRatio;
2746 setScaleAndScrollAndLayout(webViewHelper.webViewImpl(), WebPoint(0, 0), (web ViewHelper.webViewImpl()->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyL egibleRatio) / 2); 2746 setScaleAndScrollAndLayout(webViewHelper.webViewImpl(), WebPoint(0, 0), (web ViewHelper.webViewImpl()->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyL egibleRatio) / 2);
2747 simulateDoubleTap(webViewHelper.webViewImpl(), doubleTapPoint, scale); 2747 simulateDoubleTap(webViewHelper.webViewImpl(), doubleTapPoint, scale);
2748 EXPECT_FLOAT_EQ(legibleScale, scale); 2748 EXPECT_FLOAT_EQ(legibleScale, scale);
2749 simulateDoubleTap(webViewHelper.webViewImpl(), doubleTapPoint, scale); 2749 simulateDoubleTap(webViewHelper.webViewImpl(), doubleTapPoint, scale);
2750 EXPECT_FLOAT_EQ(webViewHelper.webViewImpl()->minimumPageScaleFactor(), scale ); 2750 EXPECT_FLOAT_EQ(webViewHelper.webViewImpl()->minimumPageScaleFactor(), scale );
2751 simulateDoubleTap(webViewHelper.webViewImpl(), doubleTapPoint, scale); 2751 simulateDoubleTap(webViewHelper.webViewImpl(), doubleTapPoint, scale);
2752 EXPECT_FLOAT_EQ(legibleScale, scale); 2752 EXPECT_FLOAT_EQ(legibleScale, scale);
2753 } 2753 }
2754 2754
2755 TEST_P(ParametrizedWebFrameTest, BlockBoundTest) 2755 TEST_P(ParameterizedWebFrameTest, BlockBoundTest)
2756 { 2756 {
2757 registerMockedHttpURLLoad("block_bound.html"); 2757 registerMockedHttpURLLoad("block_bound.html");
2758 2758
2759 FrameTestHelpers::WebViewHelper webViewHelper(this); 2759 FrameTestHelpers::WebViewHelper webViewHelper(this);
2760 webViewHelper.initializeAndLoad(m_baseURL + "block_bound.html", false, 0, 0, configureAndroid); 2760 webViewHelper.initializeAndLoad(m_baseURL + "block_bound.html", false, 0, 0, configureAndroid);
2761 2761
2762 IntRect rectBack = IntRect(0, 0, 200, 200); 2762 IntRect rectBack = IntRect(0, 0, 200, 200);
2763 IntRect rectLeftTop = IntRect(10, 10, 80, 80); 2763 IntRect rectLeftTop = IntRect(10, 10, 80, 80);
2764 IntRect rectRightBottom = IntRect(110, 110, 80, 80); 2764 IntRect rectRightBottom = IntRect(110, 110, 80, 80);
2765 IntRect blockBound; 2765 IntRect blockBound;
(...skipping 13 matching lines...) Expand all
2779 blockBound = IntRect(webViewHelper.webViewImpl()->computeBlockBound(WebPoint (90, 90), true)); 2779 blockBound = IntRect(webViewHelper.webViewImpl()->computeBlockBound(WebPoint (90, 90), true));
2780 EXPECT_RECT_EQ(rectBack, blockBound); 2780 EXPECT_RECT_EQ(rectBack, blockBound);
2781 2781
2782 blockBound = IntRect(webViewHelper.webViewImpl()->computeBlockBound(WebPoint (109, 109), true)); 2782 blockBound = IntRect(webViewHelper.webViewImpl()->computeBlockBound(WebPoint (109, 109), true));
2783 EXPECT_RECT_EQ(rectBack, blockBound); 2783 EXPECT_RECT_EQ(rectBack, blockBound);
2784 2784
2785 blockBound = IntRect(webViewHelper.webViewImpl()->computeBlockBound(WebPoint (110, 110), true)); 2785 blockBound = IntRect(webViewHelper.webViewImpl()->computeBlockBound(WebPoint (110, 110), true));
2786 EXPECT_RECT_EQ(rectRightBottom, blockBound); 2786 EXPECT_RECT_EQ(rectRightBottom, blockBound);
2787 } 2787 }
2788 2788
2789 TEST_P(ParametrizedWebFrameTest, DivMultipleTargetZoomMultipleDivsTest) 2789 TEST_P(ParameterizedWebFrameTest, DivMultipleTargetZoomMultipleDivsTest)
2790 { 2790 {
2791 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html"); 2791 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
2792 2792
2793 const float deviceScaleFactor = 2.0f; 2793 const float deviceScaleFactor = 2.0f;
2794 int viewportWidth = 640 / deviceScaleFactor; 2794 int viewportWidth = 640 / deviceScaleFactor;
2795 int viewportHeight = 1280 / deviceScaleFactor; 2795 int viewportHeight = 1280 / deviceScaleFactor;
2796 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2796 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2797 FrameTestHelpers::WebViewHelper webViewHelper(this); 2797 FrameTestHelpers::WebViewHelper webViewHelper(this);
2798 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html"); 2798 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html");
2799 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2799 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
2899 // Zoom out slightly. 2899 // Zoom out slightly.
2900 const float withinToleranceScale = scale * 0.9f; 2900 const float withinToleranceScale = scale * 0.9f;
2901 setScaleAndScrollAndLayout(webViewHelper.webViewImpl(), scroll, withinTolera nceScale); 2901 setScaleAndScrollAndLayout(webViewHelper.webViewImpl(), scroll, withinTolera nceScale);
2902 // Move focus back to the second edit box. 2902 // Move focus back to the second edit box.
2903 webViewHelper.webView()->advanceFocus(false); 2903 webViewHelper.webView()->advanceFocus(false);
2904 webViewHelper.webViewImpl()->computeScaleAndScrollForFocusedNode(webViewHelp er.webViewImpl()->focusedElement(), scale, scroll, needAnimation); 2904 webViewHelper.webViewImpl()->computeScaleAndScrollForFocusedNode(webViewHelp er.webViewImpl()->focusedElement(), scale, scroll, needAnimation);
2905 // The scale should not be adjusted as the zoomed out scale was sufficiently close to the previously focused scale. 2905 // The scale should not be adjusted as the zoomed out scale was sufficiently close to the previously focused scale.
2906 EXPECT_FALSE(needAnimation); 2906 EXPECT_FALSE(needAnimation);
2907 } 2907 }
2908 2908
2909 TEST_P(ParametrizedWebFrameTest, CharacterIndexAtPointWithPinchZoom) 2909 TEST_P(ParameterizedWebFrameTest, CharacterIndexAtPointWithPinchZoom)
2910 { 2910 {
2911 registerMockedHttpURLLoad("sometext.html"); 2911 registerMockedHttpURLLoad("sometext.html");
2912 2912
2913 FrameTestHelpers::WebViewHelper webViewHelper(this); 2913 FrameTestHelpers::WebViewHelper webViewHelper(this);
2914 webViewHelper.initializeAndLoad(m_baseURL + "sometext.html"); 2914 webViewHelper.initializeAndLoad(m_baseURL + "sometext.html");
2915 webViewHelper.webViewImpl()->resize(WebSize(640, 480)); 2915 webViewHelper.webViewImpl()->resize(WebSize(640, 480));
2916 webViewHelper.webViewImpl()->layout(); 2916 webViewHelper.webViewImpl()->layout();
2917 2917
2918 2918
2919 webViewHelper.webViewImpl()->setPageScaleFactor(2); 2919 webViewHelper.webViewImpl()->setPageScaleFactor(2);
2920 webViewHelper.webViewImpl()->setPinchViewportOffset(WebFloatPoint(50, 60)); 2920 webViewHelper.webViewImpl()->setPinchViewportOffset(WebFloatPoint(50, 60));
2921 2921
2922 WebRect baseRect; 2922 WebRect baseRect;
2923 WebRect extentRect; 2923 WebRect extentRect;
2924 2924
2925 WebFrame* mainFrame = webViewHelper.webViewImpl()->mainFrame(); 2925 WebFrame* mainFrame = webViewHelper.webViewImpl()->mainFrame();
2926 size_t ix = mainFrame->characterIndexForPoint(WebPoint(320, 388)); 2926 size_t ix = mainFrame->characterIndexForPoint(WebPoint(320, 388));
2927 2927
2928 EXPECT_EQ(2ul, ix); 2928 EXPECT_EQ(2ul, ix);
2929 } 2929 }
2930 2930
2931 TEST_P(ParametrizedWebFrameTest, FirstRectForCharacterRangeWithPinchZoom) 2931 TEST_P(ParameterizedWebFrameTest, FirstRectForCharacterRangeWithPinchZoom)
2932 { 2932 {
2933 registerMockedHttpURLLoad("textbox.html"); 2933 registerMockedHttpURLLoad("textbox.html");
2934 2934
2935 FrameTestHelpers::WebViewHelper webViewHelper(this); 2935 FrameTestHelpers::WebViewHelper webViewHelper(this);
2936 webViewHelper.initializeAndLoad(m_baseURL + "textbox.html", true); 2936 webViewHelper.initializeAndLoad(m_baseURL + "textbox.html", true);
2937 webViewHelper.webViewImpl()->resize(WebSize(640, 480)); 2937 webViewHelper.webViewImpl()->resize(WebSize(640, 480));
2938 2938
2939 WebFrame* mainFrame = webViewHelper.webViewImpl()->mainFrame(); 2939 WebFrame* mainFrame = webViewHelper.webViewImpl()->mainFrame();
2940 mainFrame->executeScript(WebScriptSource("selectRange();")); 2940 mainFrame->executeScript(WebScriptSource("selectRange();"));
2941 2941
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
3017 3017
3018 class TestReloadDoesntRedirectWebFrameClient : public FrameTestHelpers::TestWebF rameClient { 3018 class TestReloadDoesntRedirectWebFrameClient : public FrameTestHelpers::TestWebF rameClient {
3019 public: 3019 public:
3020 virtual WebNavigationPolicy decidePolicyForNavigation(const NavigationPolicy Info& info) override 3020 virtual WebNavigationPolicy decidePolicyForNavigation(const NavigationPolicy Info& info) override
3021 { 3021 {
3022 EXPECT_FALSE(info.isRedirect); 3022 EXPECT_FALSE(info.isRedirect);
3023 return WebNavigationPolicyCurrentTab; 3023 return WebNavigationPolicyCurrentTab;
3024 } 3024 }
3025 }; 3025 };
3026 3026
3027 TEST_P(ParametrizedWebFrameTest, ReloadDoesntSetRedirect) 3027 TEST_P(ParameterizedWebFrameTest, ReloadDoesntSetRedirect)
3028 { 3028 {
3029 // Test for case in http://crbug.com/73104. Reloading a frame very quickly 3029 // Test for case in http://crbug.com/73104. Reloading a frame very quickly
3030 // would sometimes call decidePolicyForNavigation with isRedirect=true 3030 // would sometimes call decidePolicyForNavigation with isRedirect=true
3031 registerMockedHttpURLLoad("form.html"); 3031 registerMockedHttpURLLoad("form.html");
3032 3032
3033 TestReloadDoesntRedirectWebFrameClient webFrameClient; 3033 TestReloadDoesntRedirectWebFrameClient webFrameClient;
3034 FrameTestHelpers::WebViewHelper webViewHelper(this); 3034 FrameTestHelpers::WebViewHelper webViewHelper(this);
3035 webViewHelper.initializeAndLoad(m_baseURL + "form.html", false, &webFrameCli ent); 3035 webViewHelper.initializeAndLoad(m_baseURL + "form.html", false, &webFrameCli ent);
3036 3036
3037 webViewHelper.webView()->mainFrame()->reload(true); 3037 webViewHelper.webView()->mainFrame()->reload(true);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
3106 3106
3107 // Reload the page while ignoring the cache. State should not be propagated. 3107 // Reload the page while ignoring the cache. State should not be propagated.
3108 Platform::current()->currentThread()->postTask( 3108 Platform::current()->currentThread()->postTask(
3109 FROM_HERE, new ReloadWithOverrideURLTask(webViewHelper.webViewImpl()->ma inFrame(), toKURL(m_baseURL + thirdURL), true)); 3109 FROM_HERE, new ReloadWithOverrideURLTask(webViewHelper.webViewImpl()->ma inFrame(), toKURL(m_baseURL + thirdURL), true));
3110 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webViewImpl()->m ainFrame()); 3110 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webViewImpl()->m ainFrame());
3111 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrame()->scrollOffset().width) ; 3111 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrame()->scrollOffset().width) ;
3112 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrame()->scrollOffset().height ); 3112 EXPECT_EQ(0, webViewHelper.webViewImpl()->mainFrame()->scrollOffset().height );
3113 EXPECT_EQ(1.0f, webViewHelper.webViewImpl()->pageScaleFactor()); 3113 EXPECT_EQ(1.0f, webViewHelper.webViewImpl()->pageScaleFactor());
3114 } 3114 }
3115 3115
3116 TEST_P(ParametrizedWebFrameTest, ReloadWhileProvisional) 3116 TEST_P(ParameterizedWebFrameTest, ReloadWhileProvisional)
3117 { 3117 {
3118 // Test that reloading while the previous load is still pending does not cau se the initial 3118 // Test that reloading while the previous load is still pending does not cau se the initial
3119 // request to get lost. 3119 // request to get lost.
3120 registerMockedHttpURLLoad("fixed_layout.html"); 3120 registerMockedHttpURLLoad("fixed_layout.html");
3121 3121
3122 FrameTestHelpers::WebViewHelper webViewHelper(this); 3122 FrameTestHelpers::WebViewHelper webViewHelper(this);
3123 webViewHelper.initialize(); 3123 webViewHelper.initialize();
3124 WebURLRequest request; 3124 WebURLRequest request;
3125 request.initialize(); 3125 request.initialize();
3126 request.setURL(toKURL(m_baseURL + "fixed_layout.html")); 3126 request.setURL(toKURL(m_baseURL + "fixed_layout.html"));
3127 webViewHelper.webView()->mainFrame()->loadRequest(request); 3127 webViewHelper.webView()->mainFrame()->loadRequest(request);
3128 // start reload before first request is delivered. 3128 // start reload before first request is delivered.
3129 FrameTestHelpers::reloadFrameIgnoringCache(webViewHelper.webView()->mainFram e()); 3129 FrameTestHelpers::reloadFrameIgnoringCache(webViewHelper.webView()->mainFram e());
3130 3130
3131 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource (); 3131 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource ();
3132 ASSERT_TRUE(dataSource); 3132 ASSERT_TRUE(dataSource);
3133 EXPECT_EQ(toKURL(m_baseURL + "fixed_layout.html"), toKURL(dataSource->reques t().url().spec())); 3133 EXPECT_EQ(toKURL(m_baseURL + "fixed_layout.html"), toKURL(dataSource->reques t().url().spec()));
3134 } 3134 }
3135 3135
3136 TEST_P(ParametrizedWebFrameTest, AppendRedirects) 3136 TEST_P(ParameterizedWebFrameTest, AppendRedirects)
3137 { 3137 {
3138 const std::string firstURL = "about:blank"; 3138 const std::string firstURL = "about:blank";
3139 const std::string secondURL = "http://internal.test"; 3139 const std::string secondURL = "http://internal.test";
3140 3140
3141 FrameTestHelpers::WebViewHelper webViewHelper(this); 3141 FrameTestHelpers::WebViewHelper webViewHelper(this);
3142 webViewHelper.initializeAndLoad(firstURL, true); 3142 webViewHelper.initializeAndLoad(firstURL, true);
3143 3143
3144 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource (); 3144 WebDataSource* dataSource = webViewHelper.webView()->mainFrame()->dataSource ();
3145 ASSERT_TRUE(dataSource); 3145 ASSERT_TRUE(dataSource);
3146 dataSource->appendRedirect(toKURL(secondURL)); 3146 dataSource->appendRedirect(toKURL(secondURL));
3147 3147
3148 WebVector<WebURL> redirects; 3148 WebVector<WebURL> redirects;
3149 dataSource->redirectChain(redirects); 3149 dataSource->redirectChain(redirects);
3150 ASSERT_EQ(2U, redirects.size()); 3150 ASSERT_EQ(2U, redirects.size());
3151 EXPECT_EQ(toKURL(firstURL), toKURL(redirects[0].spec().data())); 3151 EXPECT_EQ(toKURL(firstURL), toKURL(redirects[0].spec().data()));
3152 EXPECT_EQ(toKURL(secondURL), toKURL(redirects[1].spec().data())); 3152 EXPECT_EQ(toKURL(secondURL), toKURL(redirects[1].spec().data()));
3153 } 3153 }
3154 3154
3155 TEST_P(ParametrizedWebFrameTest, IframeRedirect) 3155 TEST_P(ParameterizedWebFrameTest, IframeRedirect)
3156 { 3156 {
3157 registerMockedHttpURLLoad("iframe_redirect.html"); 3157 registerMockedHttpURLLoad("iframe_redirect.html");
3158 registerMockedHttpURLLoad("visible_iframe.html"); 3158 registerMockedHttpURLLoad("visible_iframe.html");
3159 3159
3160 FrameTestHelpers::WebViewHelper webViewHelper(this); 3160 FrameTestHelpers::WebViewHelper webViewHelper(this);
3161 webViewHelper.initializeAndLoad(m_baseURL + "iframe_redirect.html", true); 3161 webViewHelper.initializeAndLoad(m_baseURL + "iframe_redirect.html", true);
3162 // Pump pending requests one more time. The test page loads script that navi gates. 3162 // Pump pending requests one more time. The test page loads script that navi gates.
3163 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame()); 3163 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame());
3164 3164
3165 WebFrame* iframe = webViewHelper.webView()->findFrameByName(WebString::fromU TF8("ifr")); 3165 WebFrame* iframe = webViewHelper.webView()->findFrameByName(WebString::fromU TF8("ifr"));
3166 ASSERT_TRUE(iframe); 3166 ASSERT_TRUE(iframe);
3167 WebDataSource* iframeDataSource = iframe->dataSource(); 3167 WebDataSource* iframeDataSource = iframe->dataSource();
3168 ASSERT_TRUE(iframeDataSource); 3168 ASSERT_TRUE(iframeDataSource);
3169 WebVector<WebURL> redirects; 3169 WebVector<WebURL> redirects;
3170 iframeDataSource->redirectChain(redirects); 3170 iframeDataSource->redirectChain(redirects);
3171 ASSERT_EQ(2U, redirects.size()); 3171 ASSERT_EQ(2U, redirects.size());
3172 EXPECT_EQ(toKURL("about:blank"), toKURL(redirects[0].spec().data())); 3172 EXPECT_EQ(toKURL("about:blank"), toKURL(redirects[0].spec().data()));
3173 EXPECT_EQ(toKURL("http://internal.test/visible_iframe.html"), toKURL(redirec ts[1].spec().data())); 3173 EXPECT_EQ(toKURL("http://internal.test/visible_iframe.html"), toKURL(redirec ts[1].spec().data()));
3174 } 3174 }
3175 3175
3176 TEST_P(ParametrizedWebFrameTest, ClearFocusedNodeTest) 3176 TEST_P(ParameterizedWebFrameTest, ClearFocusedNodeTest)
3177 { 3177 {
3178 registerMockedHttpURLLoad("iframe_clear_focused_node_test.html"); 3178 registerMockedHttpURLLoad("iframe_clear_focused_node_test.html");
3179 registerMockedHttpURLLoad("autofocus_input_field_iframe.html"); 3179 registerMockedHttpURLLoad("autofocus_input_field_iframe.html");
3180 3180
3181 FrameTestHelpers::WebViewHelper webViewHelper(this); 3181 FrameTestHelpers::WebViewHelper webViewHelper(this);
3182 webViewHelper.initializeAndLoad(m_baseURL + "iframe_clear_focused_node_test. html", true); 3182 webViewHelper.initializeAndLoad(m_baseURL + "iframe_clear_focused_node_test. html", true);
3183 3183
3184 // Clear the focused node. 3184 // Clear the focused node.
3185 webViewHelper.webView()->clearFocusedElement(); 3185 webViewHelper.webView()->clearFocusedElement();
3186 3186
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3242 createNotifications.push_back(new Notification(frame, context, worldId)) ; 3242 createNotifications.push_back(new Notification(frame, context, worldId)) ;
3243 } 3243 }
3244 3244
3245 virtual void willReleaseScriptContext(WebLocalFrame* frame, v8::Local<v8::Co ntext> context, int worldId) override 3245 virtual void willReleaseScriptContext(WebLocalFrame* frame, v8::Local<v8::Co ntext> context, int worldId) override
3246 { 3246 {
3247 releaseNotifications.push_back(new Notification(frame, context, worldId) ); 3247 releaseNotifications.push_back(new Notification(frame, context, worldId) );
3248 } 3248 }
3249 }; 3249 };
3250 3250
3251 // TODO(aa): Deflake this test. 3251 // TODO(aa): Deflake this test.
3252 TEST_P(ParametrizedWebFrameTest, FLAKY_ContextNotificationsLoadUnload) 3252 TEST_P(ParameterizedWebFrameTest, FLAKY_ContextNotificationsLoadUnload)
3253 { 3253 {
3254 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 3254 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
3255 3255
3256 registerMockedHttpURLLoad("context_notifications_test.html"); 3256 registerMockedHttpURLLoad("context_notifications_test.html");
3257 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 3257 registerMockedHttpURLLoad("context_notifications_test_frame.html");
3258 3258
3259 // Load a frame with an iframe, make sure we get the right create notificati ons. 3259 // Load a frame with an iframe, make sure we get the right create notificati ons.
3260 ContextLifetimeTestWebFrameClient webFrameClient; 3260 ContextLifetimeTestWebFrameClient webFrameClient;
3261 FrameTestHelpers::WebViewHelper webViewHelper(this); 3261 FrameTestHelpers::WebViewHelper webViewHelper(this);
3262 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient); 3262 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient);
(...skipping 19 matching lines...) Expand all
3282 webViewHelper.reset(); 3282 webViewHelper.reset();
3283 3283
3284 ASSERT_EQ(2u, webFrameClient.releaseNotifications.size()); 3284 ASSERT_EQ(2u, webFrameClient.releaseNotifications.size());
3285 ContextLifetimeTestWebFrameClient::Notification* firstReleaseNotification = webFrameClient.releaseNotifications[0]; 3285 ContextLifetimeTestWebFrameClient::Notification* firstReleaseNotification = webFrameClient.releaseNotifications[0];
3286 ContextLifetimeTestWebFrameClient::Notification* secondReleaseNotification = webFrameClient.releaseNotifications[1]; 3286 ContextLifetimeTestWebFrameClient::Notification* secondReleaseNotification = webFrameClient.releaseNotifications[1];
3287 3287
3288 ASSERT_TRUE(firstCreateNotification->Equals(secondReleaseNotification)); 3288 ASSERT_TRUE(firstCreateNotification->Equals(secondReleaseNotification));
3289 ASSERT_TRUE(secondCreateNotification->Equals(firstReleaseNotification)); 3289 ASSERT_TRUE(secondCreateNotification->Equals(firstReleaseNotification));
3290 } 3290 }
3291 3291
3292 TEST_P(ParametrizedWebFrameTest, ContextNotificationsReload) 3292 TEST_P(ParameterizedWebFrameTest, ContextNotificationsReload)
3293 { 3293 {
3294 v8::HandleScope handleScope(v8::Isolate::GetCurrent()); 3294 v8::HandleScope handleScope(v8::Isolate::GetCurrent());
3295 3295
3296 registerMockedHttpURLLoad("context_notifications_test.html"); 3296 registerMockedHttpURLLoad("context_notifications_test.html");
3297 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 3297 registerMockedHttpURLLoad("context_notifications_test_frame.html");
3298 3298
3299 ContextLifetimeTestWebFrameClient webFrameClient; 3299 ContextLifetimeTestWebFrameClient webFrameClient;
3300 FrameTestHelpers::WebViewHelper webViewHelper(this); 3300 FrameTestHelpers::WebViewHelper webViewHelper(this);
3301 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient); 3301 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient);
3302 3302
(...skipping 16 matching lines...) Expand all
3319 3319
3320 EXPECT_EQ(mainFrame, firstRefreshNotification->frame); 3320 EXPECT_EQ(mainFrame, firstRefreshNotification->frame);
3321 EXPECT_EQ(mainFrame->mainWorldScriptContext(), firstRefreshNotification->con text); 3321 EXPECT_EQ(mainFrame->mainWorldScriptContext(), firstRefreshNotification->con text);
3322 EXPECT_EQ(0, firstRefreshNotification->worldId); 3322 EXPECT_EQ(0, firstRefreshNotification->worldId);
3323 3323
3324 EXPECT_EQ(childFrame, secondRefreshNotification->frame); 3324 EXPECT_EQ(childFrame, secondRefreshNotification->frame);
3325 EXPECT_EQ(childFrame->mainWorldScriptContext(), secondRefreshNotification->c ontext); 3325 EXPECT_EQ(childFrame->mainWorldScriptContext(), secondRefreshNotification->c ontext);
3326 EXPECT_EQ(0, secondRefreshNotification->worldId); 3326 EXPECT_EQ(0, secondRefreshNotification->worldId);
3327 } 3327 }
3328 3328
3329 TEST_P(ParametrizedWebFrameTest, ContextNotificationsIsolatedWorlds) 3329 TEST_P(ParameterizedWebFrameTest, ContextNotificationsIsolatedWorlds)
3330 { 3330 {
3331 v8::Isolate* isolate = v8::Isolate::GetCurrent(); 3331 v8::Isolate* isolate = v8::Isolate::GetCurrent();
3332 v8::HandleScope handleScope(isolate); 3332 v8::HandleScope handleScope(isolate);
3333 3333
3334 registerMockedHttpURLLoad("context_notifications_test.html"); 3334 registerMockedHttpURLLoad("context_notifications_test.html");
3335 registerMockedHttpURLLoad("context_notifications_test_frame.html"); 3335 registerMockedHttpURLLoad("context_notifications_test_frame.html");
3336 3336
3337 ContextLifetimeTestWebFrameClient webFrameClient; 3337 ContextLifetimeTestWebFrameClient webFrameClient;
3338 FrameTestHelpers::WebViewHelper webViewHelper(this); 3338 FrameTestHelpers::WebViewHelper webViewHelper(this);
3339 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient); 3339 webViewHelper.initializeAndLoad(m_baseURL + "context_notifications_test.html ", true, &webFrameClient);
(...skipping 23 matching lines...) Expand all
3363 3363
3364 // And one of them should be exactly the same as the create notification for the isolated context. 3364 // And one of them should be exactly the same as the create notification for the isolated context.
3365 int matchCount = 0; 3365 int matchCount = 0;
3366 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) { 3366 for (size_t i = 0; i < webFrameClient.releaseNotifications.size(); ++i) {
3367 if (webFrameClient.releaseNotifications[i]->Equals(webFrameClient.createNo tifications[0])) 3367 if (webFrameClient.releaseNotifications[i]->Equals(webFrameClient.createNo tifications[0]))
3368 ++matchCount; 3368 ++matchCount;
3369 } 3369 }
3370 EXPECT_EQ(1, matchCount); 3370 EXPECT_EQ(1, matchCount);
3371 } 3371 }
3372 3372
3373 TEST_P(ParametrizedWebFrameTest, FindInPage) 3373 TEST_P(ParameterizedWebFrameTest, FindInPage)
3374 { 3374 {
3375 registerMockedHttpURLLoad("find.html"); 3375 registerMockedHttpURLLoad("find.html");
3376 FrameTestHelpers::WebViewHelper webViewHelper(this); 3376 FrameTestHelpers::WebViewHelper webViewHelper(this);
3377 webViewHelper.initializeAndLoad(m_baseURL + "find.html"); 3377 webViewHelper.initializeAndLoad(m_baseURL + "find.html");
3378 WebFrame* frame = webViewHelper.webView()->mainFrame(); 3378 WebFrame* frame = webViewHelper.webView()->mainFrame();
3379 const int findIdentifier = 12345; 3379 const int findIdentifier = 12345;
3380 WebFindOptions options; 3380 WebFindOptions options;
3381 3381
3382 // Find in a <div> element. 3382 // Find in a <div> element.
3383 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false, 0)); 3383 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false, 0));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3420 3420
3421 // Find in <select> content. 3421 // Find in <select> content.
3422 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false, 0)); 3422 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false, 0));
3423 // If there are any matches, stopFinding will set the selection on the found text. 3423 // If there are any matches, stopFinding will set the selection on the found text.
3424 // However, we do not expect any matches, so check that the selection is nul l. 3424 // However, we do not expect any matches, so check that the selection is nul l.
3425 frame->stopFinding(false); 3425 frame->stopFinding(false);
3426 range = frame->selectionRange(); 3426 range = frame->selectionRange();
3427 ASSERT_TRUE(range.isNull()); 3427 ASSERT_TRUE(range.isNull());
3428 } 3428 }
3429 3429
3430 TEST_P(ParametrizedWebFrameTest, GetContentAsPlainText) 3430 TEST_P(ParameterizedWebFrameTest, GetContentAsPlainText)
3431 { 3431 {
3432 FrameTestHelpers::WebViewHelper webViewHelper(this); 3432 FrameTestHelpers::WebViewHelper webViewHelper(this);
3433 webViewHelper.initializeAndLoad("about:blank", true); 3433 webViewHelper.initializeAndLoad("about:blank", true);
3434 // We set the size because it impacts line wrapping, which changes the 3434 // We set the size because it impacts line wrapping, which changes the
3435 // resulting text value. 3435 // resulting text value.
3436 webViewHelper.webView()->resize(WebSize(640, 480)); 3436 webViewHelper.webView()->resize(WebSize(640, 480));
3437 WebFrame* frame = webViewHelper.webView()->mainFrame(); 3437 WebFrame* frame = webViewHelper.webView()->mainFrame();
3438 3438
3439 // Generate a simple test case. 3439 // Generate a simple test case.
3440 const char simpleSource[] = "<div>Foo bar</div><div></div>baz"; 3440 const char simpleSource[] = "<div>Foo bar</div><div></div>baz";
(...skipping 21 matching lines...) Expand all
3462 3462
3463 text = frame->contentAsText(std::numeric_limits<size_t>::max()); 3463 text = frame->contentAsText(std::numeric_limits<size_t>::max());
3464 EXPECT_EQ("Hello world\n\nsub\ntext", text.utf8()); 3464 EXPECT_EQ("Hello world\n\nsub\ntext", text.utf8());
3465 3465
3466 // Get the frame text where the subframe separator falls on the boundary of 3466 // Get the frame text where the subframe separator falls on the boundary of
3467 // what we'll take. There used to be a crash in this case. 3467 // what we'll take. There used to be a crash in this case.
3468 text = frame->contentAsText(12); 3468 text = frame->contentAsText(12);
3469 EXPECT_EQ("Hello world", text.utf8()); 3469 EXPECT_EQ("Hello world", text.utf8());
3470 } 3470 }
3471 3471
3472 TEST_P(ParametrizedWebFrameTest, GetFullHtmlOfPage) 3472 TEST_P(ParameterizedWebFrameTest, GetFullHtmlOfPage)
3473 { 3473 {
3474 FrameTestHelpers::WebViewHelper webViewHelper(this); 3474 FrameTestHelpers::WebViewHelper webViewHelper(this);
3475 webViewHelper.initializeAndLoad("about:blank", true); 3475 webViewHelper.initializeAndLoad("about:blank", true);
3476 WebFrame* frame = webViewHelper.webView()->mainFrame(); 3476 WebFrame* frame = webViewHelper.webView()->mainFrame();
3477 3477
3478 // Generate a simple test case. 3478 // Generate a simple test case.
3479 const char simpleSource[] = "<p>Hello</p><p>World</p>"; 3479 const char simpleSource[] = "<p>Hello</p><p>World</p>";
3480 KURL testURL = toKURL("about:blank"); 3480 KURL testURL = toKURL("about:blank");
3481 FrameTestHelpers::loadHTMLString(frame, simpleSource, testURL); 3481 FrameTestHelpers::loadHTMLString(frame, simpleSource, testURL);
3482 3482
(...skipping 21 matching lines...) Expand all
3504 } 3504 }
3505 3505
3506 class TestExecuteScriptDuringDidCreateScriptContext : public FrameTestHelpers::T estWebFrameClient { 3506 class TestExecuteScriptDuringDidCreateScriptContext : public FrameTestHelpers::T estWebFrameClient {
3507 public: 3507 public:
3508 virtual void didCreateScriptContext(WebLocalFrame* frame, v8::Local<v8::Cont ext> context, int extensionGroup, int worldId) override 3508 virtual void didCreateScriptContext(WebLocalFrame* frame, v8::Local<v8::Cont ext> context, int extensionGroup, int worldId) override
3509 { 3509 {
3510 frame->executeScript(WebScriptSource("window.history = 'replaced';")); 3510 frame->executeScript(WebScriptSource("window.history = 'replaced';"));
3511 } 3511 }
3512 }; 3512 };
3513 3513
3514 TEST_P(ParametrizedWebFrameTest, ExecuteScriptDuringDidCreateScriptContext) 3514 TEST_P(ParameterizedWebFrameTest, ExecuteScriptDuringDidCreateScriptContext)
3515 { 3515 {
3516 registerMockedHttpURLLoad("hello_world.html"); 3516 registerMockedHttpURLLoad("hello_world.html");
3517 3517
3518 TestExecuteScriptDuringDidCreateScriptContext webFrameClient; 3518 TestExecuteScriptDuringDidCreateScriptContext webFrameClient;
3519 FrameTestHelpers::WebViewHelper webViewHelper(this); 3519 FrameTestHelpers::WebViewHelper webViewHelper(this);
3520 webViewHelper.initializeAndLoad(m_baseURL + "hello_world.html", true, &webFr ameClient); 3520 webViewHelper.initializeAndLoad(m_baseURL + "hello_world.html", true, &webFr ameClient);
3521 3521
3522 FrameTestHelpers::reloadFrame(webViewHelper.webView()->mainFrame()); 3522 FrameTestHelpers::reloadFrame(webViewHelper.webView()->mainFrame());
3523 } 3523 }
3524 3524
(...skipping 13 matching lines...) Expand all
3538 } 3538 }
3539 3539
3540 bool findResultsAreReady() const { return m_findResultsAreReady; } 3540 bool findResultsAreReady() const { return m_findResultsAreReady; }
3541 int count() const { return m_count; } 3541 int count() const { return m_count; }
3542 3542
3543 private: 3543 private:
3544 bool m_findResultsAreReady; 3544 bool m_findResultsAreReady;
3545 int m_count; 3545 int m_count;
3546 }; 3546 };
3547 3547
3548 TEST_P(ParametrizedWebFrameTest, FindInPageMatchRects) 3548 TEST_P(ParameterizedWebFrameTest, FindInPageMatchRects)
3549 { 3549 {
3550 registerMockedHttpURLLoad("find_in_page.html"); 3550 registerMockedHttpURLLoad("find_in_page.html");
3551 registerMockedHttpURLLoad("find_in_page_frame.html"); 3551 registerMockedHttpURLLoad("find_in_page_frame.html");
3552 3552
3553 FindUpdateWebFrameClient client; 3553 FindUpdateWebFrameClient client;
3554 FrameTestHelpers::WebViewHelper webViewHelper(this); 3554 FrameTestHelpers::WebViewHelper webViewHelper(this);
3555 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3555 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3556 webViewHelper.webView()->resize(WebSize(640, 480)); 3556 webViewHelper.webView()->resize(WebSize(640, 480));
3557 webViewHelper.webView()->setMaximumLegibleScale(1.f); 3557 webViewHelper.webView()->setMaximumLegibleScale(1.f);
3558 webViewHelper.webView()->layout(); 3558 webViewHelper.webView()->layout();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
3659 // immediate containing div. Consequently, result 18 should be above result 17. 3659 // immediate containing div. Consequently, result 18 should be above result 17.
3660 EXPECT_TRUE(webMatchRects[17].y > webMatchRects[18].y); 3660 EXPECT_TRUE(webMatchRects[17].y > webMatchRects[18].y);
3661 3661
3662 // Resizing should update the rects version. 3662 // Resizing should update the rects version.
3663 webViewHelper.webView()->resize(WebSize(800, 600)); 3663 webViewHelper.webView()->resize(WebSize(800, 600));
3664 webViewHelper.webView()->layout(); 3664 webViewHelper.webView()->layout();
3665 runPendingTasks(); 3665 runPendingTasks();
3666 EXPECT_TRUE(mainFrame->findMatchMarkersVersion() != rectsVersion); 3666 EXPECT_TRUE(mainFrame->findMatchMarkersVersion() != rectsVersion);
3667 } 3667 }
3668 3668
3669 TEST_P(ParametrizedWebFrameTest, FindInPageSkipsHiddenFrames) 3669 TEST_P(ParameterizedWebFrameTest, FindInPageSkipsHiddenFrames)
3670 { 3670 {
3671 registerMockedHttpURLLoad("find_in_hidden_frame.html"); 3671 registerMockedHttpURLLoad("find_in_hidden_frame.html");
3672 3672
3673 FindUpdateWebFrameClient client; 3673 FindUpdateWebFrameClient client;
3674 FrameTestHelpers::WebViewHelper webViewHelper(this); 3674 FrameTestHelpers::WebViewHelper webViewHelper(this);
3675 webViewHelper.initializeAndLoad(m_baseURL + "find_in_hidden_frame.html", tru e, &client); 3675 webViewHelper.initializeAndLoad(m_baseURL + "find_in_hidden_frame.html", tru e, &client);
3676 webViewHelper.webView()->resize(WebSize(640, 480)); 3676 webViewHelper.webView()->resize(WebSize(640, 480));
3677 webViewHelper.webView()->layout(); 3677 webViewHelper.webView()->layout();
3678 runPendingTasks(); 3678 runPendingTasks();
3679 3679
3680 static const char* kFindString = "hello"; 3680 static const char* kFindString = "hello";
3681 static const int kFindIdentifier = 12345; 3681 static const int kFindIdentifier = 12345;
3682 static const int kNumResults = 1; 3682 static const int kNumResults = 1;
3683 3683
3684 WebFindOptions options; 3684 WebFindOptions options;
3685 WebString searchText = WebString::fromUTF8(kFindString); 3685 WebString searchText = WebString::fromUTF8(kFindString);
3686 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 3686 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
3687 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)) ; 3687 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)) ;
3688 3688
3689 mainFrame->resetMatchCount(); 3689 mainFrame->resetMatchCount();
3690 3690
3691 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3691 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3692 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); 3692 frame->scopeStringMatches(kFindIdentifier, searchText, options, true);
3693 3693
3694 runPendingTasks(); 3694 runPendingTasks();
3695 EXPECT_TRUE(client.findResultsAreReady()); 3695 EXPECT_TRUE(client.findResultsAreReady());
3696 EXPECT_EQ(kNumResults, client.count()); 3696 EXPECT_EQ(kNumResults, client.count());
3697 } 3697 }
3698 3698
3699 TEST_P(ParametrizedWebFrameTest, FindOnDetachedFrame) 3699 TEST_P(ParameterizedWebFrameTest, FindOnDetachedFrame)
3700 { 3700 {
3701 registerMockedHttpURLLoad("find_in_page.html"); 3701 registerMockedHttpURLLoad("find_in_page.html");
3702 registerMockedHttpURLLoad("find_in_page_frame.html"); 3702 registerMockedHttpURLLoad("find_in_page_frame.html");
3703 3703
3704 FindUpdateWebFrameClient client; 3704 FindUpdateWebFrameClient client;
3705 FrameTestHelpers::WebViewHelper webViewHelper(this); 3705 FrameTestHelpers::WebViewHelper webViewHelper(this);
3706 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3706 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3707 webViewHelper.webView()->resize(WebSize(640, 480)); 3707 webViewHelper.webView()->resize(WebSize(640, 480));
3708 webViewHelper.webView()->layout(); 3708 webViewHelper.webView()->layout();
3709 runPendingTasks(); 3709 runPendingTasks();
(...skipping 18 matching lines...) Expand all
3728 3728
3729 mainFrame->resetMatchCount(); 3729 mainFrame->resetMatchCount();
3730 3730
3731 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3731 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3732 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); 3732 frame->scopeStringMatches(kFindIdentifier, searchText, options, true);
3733 3733
3734 runPendingTasks(); 3734 runPendingTasks();
3735 EXPECT_TRUE(client.findResultsAreReady()); 3735 EXPECT_TRUE(client.findResultsAreReady());
3736 } 3736 }
3737 3737
3738 TEST_P(ParametrizedWebFrameTest, FindDetachFrameBeforeScopeStrings) 3738 TEST_P(ParameterizedWebFrameTest, FindDetachFrameBeforeScopeStrings)
3739 { 3739 {
3740 registerMockedHttpURLLoad("find_in_page.html"); 3740 registerMockedHttpURLLoad("find_in_page.html");
3741 registerMockedHttpURLLoad("find_in_page_frame.html"); 3741 registerMockedHttpURLLoad("find_in_page_frame.html");
3742 3742
3743 FindUpdateWebFrameClient client; 3743 FindUpdateWebFrameClient client;
3744 FrameTestHelpers::WebViewHelper webViewHelper(this); 3744 FrameTestHelpers::WebViewHelper webViewHelper(this);
3745 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3745 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3746 webViewHelper.webView()->resize(WebSize(640, 480)); 3746 webViewHelper.webView()->resize(WebSize(640, 480));
3747 webViewHelper.webView()->layout(); 3747 webViewHelper.webView()->layout();
3748 runPendingTasks(); 3748 runPendingTasks();
(...skipping 18 matching lines...) Expand all
3767 3767
3768 mainFrame->resetMatchCount(); 3768 mainFrame->resetMatchCount();
3769 3769
3770 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3770 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3771 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); 3771 frame->scopeStringMatches(kFindIdentifier, searchText, options, true);
3772 3772
3773 runPendingTasks(); 3773 runPendingTasks();
3774 EXPECT_TRUE(client.findResultsAreReady()); 3774 EXPECT_TRUE(client.findResultsAreReady());
3775 } 3775 }
3776 3776
3777 TEST_P(ParametrizedWebFrameTest, FindDetachFrameWhileScopingStrings) 3777 TEST_P(ParameterizedWebFrameTest, FindDetachFrameWhileScopingStrings)
3778 { 3778 {
3779 registerMockedHttpURLLoad("find_in_page.html"); 3779 registerMockedHttpURLLoad("find_in_page.html");
3780 registerMockedHttpURLLoad("find_in_page_frame.html"); 3780 registerMockedHttpURLLoad("find_in_page_frame.html");
3781 3781
3782 FindUpdateWebFrameClient client; 3782 FindUpdateWebFrameClient client;
3783 FrameTestHelpers::WebViewHelper webViewHelper(this); 3783 FrameTestHelpers::WebViewHelper webViewHelper(this);
3784 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt); 3784 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie nt);
3785 webViewHelper.webView()->resize(WebSize(640, 480)); 3785 webViewHelper.webView()->resize(WebSize(640, 480));
3786 webViewHelper.webView()->layout(); 3786 webViewHelper.webView()->layout();
3787 runPendingTasks(); 3787 runPendingTasks();
(...skipping 18 matching lines...) Expand all
3806 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3806 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3807 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); 3807 frame->scopeStringMatches(kFindIdentifier, searchText, options, true);
3808 3808
3809 // The first scopeStringMatches will have reset the state. Detach before it actually scopes. 3809 // The first scopeStringMatches will have reset the state. Detach before it actually scopes.
3810 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); 3810 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove());
3811 3811
3812 runPendingTasks(); 3812 runPendingTasks();
3813 EXPECT_TRUE(client.findResultsAreReady()); 3813 EXPECT_TRUE(client.findResultsAreReady());
3814 } 3814 }
3815 3815
3816 TEST_P(ParametrizedWebFrameTest, ResetMatchCount) 3816 TEST_P(ParameterizedWebFrameTest, ResetMatchCount)
3817 { 3817 {
3818 registerMockedHttpURLLoad("find_in_generated_frame.html"); 3818 registerMockedHttpURLLoad("find_in_generated_frame.html");
3819 3819
3820 FindUpdateWebFrameClient client; 3820 FindUpdateWebFrameClient client;
3821 FrameTestHelpers::WebViewHelper webViewHelper(this); 3821 FrameTestHelpers::WebViewHelper webViewHelper(this);
3822 webViewHelper.initializeAndLoad(m_baseURL + "find_in_generated_frame.html", true, &client); 3822 webViewHelper.initializeAndLoad(m_baseURL + "find_in_generated_frame.html", true, &client);
3823 webViewHelper.webView()->resize(WebSize(640, 480)); 3823 webViewHelper.webView()->resize(WebSize(640, 480));
3824 webViewHelper.webView()->layout(); 3824 webViewHelper.webView()->layout();
3825 runPendingTasks(); 3825 runPendingTasks();
3826 3826
(...skipping 10 matching lines...) Expand all
3837 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) { 3837 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) {
3838 EXPECT_FALSE(frame->find(kFindIdentifier, searchText, options, false, 0) ); 3838 EXPECT_FALSE(frame->find(kFindIdentifier, searchText, options, false, 0) );
3839 } 3839 }
3840 3840
3841 runPendingTasks(); 3841 runPendingTasks();
3842 EXPECT_FALSE(client.findResultsAreReady()); 3842 EXPECT_FALSE(client.findResultsAreReady());
3843 3843
3844 mainFrame->resetMatchCount(); 3844 mainFrame->resetMatchCount();
3845 } 3845 }
3846 3846
3847 TEST_P(ParametrizedWebFrameTest, SetTickmarks) 3847 TEST_P(ParameterizedWebFrameTest, SetTickmarks)
3848 { 3848 {
3849 registerMockedHttpURLLoad("find.html"); 3849 registerMockedHttpURLLoad("find.html");
3850 3850
3851 FindUpdateWebFrameClient client; 3851 FindUpdateWebFrameClient client;
3852 FrameTestHelpers::WebViewHelper webViewHelper(this); 3852 FrameTestHelpers::WebViewHelper webViewHelper(this);
3853 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client); 3853 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client);
3854 webViewHelper.webView()->resize(WebSize(640, 480)); 3854 webViewHelper.webView()->resize(WebSize(640, 480));
3855 webViewHelper.webView()->layout(); 3855 webViewHelper.webView()->layout();
3856 runPendingTasks(); 3856 runPendingTasks();
3857 3857
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3915 static WebRect elementBounds(WebFrame* frame, const WebString& id) 3915 static WebRect elementBounds(WebFrame* frame, const WebString& id)
3916 { 3916 {
3917 return frame->document().getElementById(id).boundsInViewportSpace(); 3917 return frame->document().getElementById(id).boundsInViewportSpace();
3918 } 3918 }
3919 3919
3920 static std::string selectionAsString(WebFrame* frame) 3920 static std::string selectionAsString(WebFrame* frame)
3921 { 3921 {
3922 return frame->selectionAsText().utf8(); 3922 return frame->selectionAsText().utf8();
3923 } 3923 }
3924 3924
3925 TEST_P(ParametrizedWebFrameTest, SelectRange) 3925 TEST_P(ParameterizedWebFrameTest, SelectRange)
3926 { 3926 {
3927 WebFrame* frame; 3927 WebFrame* frame;
3928 WebRect startWebRect; 3928 WebRect startWebRect;
3929 WebRect endWebRect; 3929 WebRect endWebRect;
3930 3930
3931 registerMockedHttpURLLoad("select_range_basic.html"); 3931 registerMockedHttpURLLoad("select_range_basic.html");
3932 registerMockedHttpURLLoad("select_range_scroll.html"); 3932 registerMockedHttpURLLoad("select_range_scroll.html");
3933 3933
3934 FrameTestHelpers::WebViewHelper webViewHelper(this); 3934 FrameTestHelpers::WebViewHelper webViewHelper(this);
3935 initializeTextSelectionWebView(m_baseURL + "select_range_basic.html", &webVi ewHelper); 3935 initializeTextSelectionWebView(m_baseURL + "select_range_basic.html", &webVi ewHelper);
3936 frame = webViewHelper.webView()->mainFrame(); 3936 frame = webViewHelper.webView()->mainFrame();
3937 EXPECT_EQ("Some test text for testing.", selectionAsString(frame)); 3937 EXPECT_EQ("Some test text for testing.", selectionAsString(frame));
3938 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 3938 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
3939 frame->executeCommand(WebString::fromUTF8("Unselect")); 3939 frame->executeCommand(WebString::fromUTF8("Unselect"));
3940 EXPECT_EQ("", selectionAsString(frame)); 3940 EXPECT_EQ("", selectionAsString(frame));
3941 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 3941 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
3942 EXPECT_EQ("Some test text for testing.", selectionAsString(frame)); 3942 EXPECT_EQ("Some test text for testing.", selectionAsString(frame));
3943 3943
3944 initializeTextSelectionWebView(m_baseURL + "select_range_scroll.html", &webV iewHelper); 3944 initializeTextSelectionWebView(m_baseURL + "select_range_scroll.html", &webV iewHelper);
3945 frame = webViewHelper.webView()->mainFrame(); 3945 frame = webViewHelper.webView()->mainFrame();
3946 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ; 3946 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ;
3947 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 3947 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
3948 frame->executeCommand(WebString::fromUTF8("Unselect")); 3948 frame->executeCommand(WebString::fromUTF8("Unselect"));
3949 EXPECT_EQ("", selectionAsString(frame)); 3949 EXPECT_EQ("", selectionAsString(frame));
3950 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 3950 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
3951 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ; 3951 EXPECT_EQ("Some offscreen test text for testing.", selectionAsString(frame)) ;
3952 } 3952 }
3953 3953
3954 TEST_P(ParametrizedWebFrameTest, SelectRangeInIframe) 3954 TEST_P(ParameterizedWebFrameTest, SelectRangeInIframe)
3955 { 3955 {
3956 WebFrame* frame; 3956 WebFrame* frame;
3957 WebRect startWebRect; 3957 WebRect startWebRect;
3958 WebRect endWebRect; 3958 WebRect endWebRect;
3959 3959
3960 registerMockedHttpURLLoad("select_range_iframe.html"); 3960 registerMockedHttpURLLoad("select_range_iframe.html");
3961 registerMockedHttpURLLoad("select_range_basic.html"); 3961 registerMockedHttpURLLoad("select_range_basic.html");
3962 3962
3963 FrameTestHelpers::WebViewHelper webViewHelper(this); 3963 FrameTestHelpers::WebViewHelper webViewHelper(this);
3964 initializeTextSelectionWebView(m_baseURL + "select_range_iframe.html", &webV iewHelper); 3964 initializeTextSelectionWebView(m_baseURL + "select_range_iframe.html", &webV iewHelper);
3965 frame = webViewHelper.webView()->mainFrame(); 3965 frame = webViewHelper.webView()->mainFrame();
3966 WebFrame* subframe = frame->firstChild(); 3966 WebFrame* subframe = frame->firstChild();
3967 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe)); 3967 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe));
3968 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 3968 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
3969 subframe->executeCommand(WebString::fromUTF8("Unselect")); 3969 subframe->executeCommand(WebString::fromUTF8("Unselect"));
3970 EXPECT_EQ("", selectionAsString(subframe)); 3970 EXPECT_EQ("", selectionAsString(subframe));
3971 subframe->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect) ); 3971 subframe->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect) );
3972 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe)); 3972 EXPECT_EQ("Some test text for testing.", selectionAsString(subframe));
3973 } 3973 }
3974 3974
3975 TEST_P(ParametrizedWebFrameTest, SelectRangeDivContentEditable) 3975 TEST_P(ParameterizedWebFrameTest, SelectRangeDivContentEditable)
3976 { 3976 {
3977 WebFrame* frame; 3977 WebFrame* frame;
3978 WebRect startWebRect; 3978 WebRect startWebRect;
3979 WebRect endWebRect; 3979 WebRect endWebRect;
3980 3980
3981 registerMockedHttpURLLoad("select_range_div_editable.html"); 3981 registerMockedHttpURLLoad("select_range_div_editable.html");
3982 3982
3983 // Select the middle of an editable element, then try to extend the selectio n to the top of the document. 3983 // Select the middle of an editable element, then try to extend the selectio n to the top of the document.
3984 // The selection range should be clipped to the bounds of the editable eleme nt. 3984 // The selection range should be clipped to the bounds of the editable eleme nt.
3985 FrameTestHelpers::WebViewHelper webViewHelper(this); 3985 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 14 matching lines...) Expand all
4000 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4000 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4001 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4001 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4002 4002
4003 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4003 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4004 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480)); 4004 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480));
4005 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame)); 4005 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame));
4006 } 4006 }
4007 4007
4008 // positionForPoint returns the wrong values for contenteditable spans. See 4008 // positionForPoint returns the wrong values for contenteditable spans. See
4009 // http://crbug.com/238334. 4009 // http://crbug.com/238334.
4010 TEST_P(ParametrizedWebFrameTest, DISABLED_SelectRangeSpanContentEditable) 4010 TEST_P(ParameterizedWebFrameTest, DISABLED_SelectRangeSpanContentEditable)
4011 { 4011 {
4012 WebFrame* frame; 4012 WebFrame* frame;
4013 WebRect startWebRect; 4013 WebRect startWebRect;
4014 WebRect endWebRect; 4014 WebRect endWebRect;
4015 4015
4016 registerMockedHttpURLLoad("select_range_span_editable.html"); 4016 registerMockedHttpURLLoad("select_range_span_editable.html");
4017 4017
4018 // Select the middle of an editable element, then try to extend the selectio n to the top of the document. 4018 // Select the middle of an editable element, then try to extend the selectio n to the top of the document.
4019 // The selection range should be clipped to the bounds of the editable eleme nt. 4019 // The selection range should be clipped to the bounds of the editable eleme nt.
4020 FrameTestHelpers::WebViewHelper webViewHelper(this); 4020 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 13 matching lines...) Expand all
4034 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect)); 4034 frame->selectRange(topLeft(startWebRect), bottomRightMinusOne(endWebRect));
4035 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4035 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4036 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4036 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4037 4037
4038 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4038 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4039 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4039 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4040 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480)); 4040 frame->selectRange(topLeft(startWebRect), WebPoint(640, 480));
4041 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame)); 4041 EXPECT_EQ("This text is initially selected. 16-char footer.", selectionAsStr ing(frame));
4042 } 4042 }
4043 4043
4044 TEST_P(ParametrizedWebFrameTest, SelectRangeCanMoveSelectionStart) 4044 TEST_P(ParameterizedWebFrameTest, SelectRangeCanMoveSelectionStart)
4045 { 4045 {
4046 registerMockedHttpURLLoad("text_selection.html"); 4046 registerMockedHttpURLLoad("text_selection.html");
4047 FrameTestHelpers::WebViewHelper webViewHelper(this); 4047 FrameTestHelpers::WebViewHelper webViewHelper(this);
4048 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper); 4048 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper);
4049 WebFrame* frame = webViewHelper.webView()->mainFrame(); 4049 WebFrame* frame = webViewHelper.webView()->mainFrame();
4050 4050
4051 // Select second span. We can move the start to include the first span. 4051 // Select second span. We can move the start to include the first span.
4052 frame->executeScript(WebScriptSource("selectElement('header_2');")); 4052 frame->executeScript(WebScriptSource("selectElement('header_2');"));
4053 EXPECT_EQ("Header 2.", selectionAsString(frame)); 4053 EXPECT_EQ("Header 2.", selectionAsString(frame));
4054 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "header_2")), to pLeft(elementBounds(frame, "header_1"))); 4054 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "header_2")), to pLeft(elementBounds(frame, "header_1")));
(...skipping 27 matching lines...) Expand all
4082 4082
4083 // If the selection is editable text, we can't extend it into non-editable t ext. 4083 // If the selection is editable text, we can't extend it into non-editable t ext.
4084 frame->executeScript(WebScriptSource("selectElement('editable_2');")); 4084 frame->executeScript(WebScriptSource("selectElement('editable_2');"));
4085 EXPECT_EQ("Editable 2.", selectionAsString(frame)); 4085 EXPECT_EQ("Editable 2.", selectionAsString(frame));
4086 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "editable_2")), topLeft(elementBounds(frame, "header_2"))); 4086 frame->selectRange(bottomRightMinusOne(elementBounds(frame, "editable_2")), topLeft(elementBounds(frame, "header_2")));
4087 // positionForPoint returns the wrong values for contenteditable spans. See 4087 // positionForPoint returns the wrong values for contenteditable spans. See
4088 // http://crbug.com/238334. 4088 // http://crbug.com/238334.
4089 // EXPECT_EQ("[ Editable 1. Editable 2.", selectionAsString(frame)); 4089 // EXPECT_EQ("[ Editable 1. Editable 2.", selectionAsString(frame));
4090 } 4090 }
4091 4091
4092 TEST_P(ParametrizedWebFrameTest, SelectRangeCanMoveSelectionEnd) 4092 TEST_P(ParameterizedWebFrameTest, SelectRangeCanMoveSelectionEnd)
4093 { 4093 {
4094 registerMockedHttpURLLoad("text_selection.html"); 4094 registerMockedHttpURLLoad("text_selection.html");
4095 FrameTestHelpers::WebViewHelper webViewHelper(this); 4095 FrameTestHelpers::WebViewHelper webViewHelper(this);
4096 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper); 4096 initializeTextSelectionWebView(m_baseURL + "text_selection.html", &webViewHe lper);
4097 WebFrame* frame = webViewHelper.webView()->mainFrame(); 4097 WebFrame* frame = webViewHelper.webView()->mainFrame();
4098 4098
4099 // Select first span. We can move the end to include the second span. 4099 // Select first span. We can move the end to include the second span.
4100 frame->executeScript(WebScriptSource("selectElement('header_1');")); 4100 frame->executeScript(WebScriptSource("selectElement('header_1');"));
4101 EXPECT_EQ("Header 1.", selectionAsString(frame)); 4101 EXPECT_EQ("Header 1.", selectionAsString(frame));
4102 frame->selectRange(topLeft(elementBounds(frame, "header_1")), bottomRightMin usOne(elementBounds(frame, "header_2"))); 4102 frame->selectRange(topLeft(elementBounds(frame, "header_1")), bottomRightMin usOne(elementBounds(frame, "header_2")));
(...skipping 27 matching lines...) Expand all
4130 4130
4131 // If the selection is editable text, we can't extend it into non-editable t ext. 4131 // If the selection is editable text, we can't extend it into non-editable t ext.
4132 frame->executeScript(WebScriptSource("selectElement('editable_1');")); 4132 frame->executeScript(WebScriptSource("selectElement('editable_1');"));
4133 EXPECT_EQ("Editable 1.", selectionAsString(frame)); 4133 EXPECT_EQ("Editable 1.", selectionAsString(frame));
4134 frame->selectRange(topLeft(elementBounds(frame, "editable_1")), bottomRightM inusOne(elementBounds(frame, "footer_1"))); 4134 frame->selectRange(topLeft(elementBounds(frame, "editable_1")), bottomRightM inusOne(elementBounds(frame, "footer_1")));
4135 // positionForPoint returns the wrong values for contenteditable spans. See 4135 // positionForPoint returns the wrong values for contenteditable spans. See
4136 // http://crbug.com/238334. 4136 // http://crbug.com/238334.
4137 // EXPECT_EQ("Editable 1. Editable 2. ]", selectionAsString(frame)); 4137 // EXPECT_EQ("Editable 1. Editable 2. ]", selectionAsString(frame));
4138 } 4138 }
4139 4139
4140 TEST_P(ParametrizedWebFrameTest, MoveRangeSelectionExtent) 4140 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtent)
4141 { 4141 {
4142 WebLocalFrameImpl* frame; 4142 WebLocalFrameImpl* frame;
4143 WebRect startWebRect; 4143 WebRect startWebRect;
4144 WebRect endWebRect; 4144 WebRect endWebRect;
4145 4145
4146 registerMockedHttpURLLoad("move_range_selection_extent.html"); 4146 registerMockedHttpURLLoad("move_range_selection_extent.html");
4147 4147
4148 FrameTestHelpers::WebViewHelper webViewHelper(this); 4148 FrameTestHelpers::WebViewHelper webViewHelper(this);
4149 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper); 4149 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper);
4150 frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); 4150 frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame());
(...skipping 13 matching lines...) Expand all
4164 frame->moveRangeSelectionExtent(WebPoint(640, 480)); 4164 frame->moveRangeSelectionExtent(WebPoint(640, 480));
4165 EXPECT_EQ(" 16-char footer.", selectionAsString(frame)); 4165 EXPECT_EQ(" 16-char footer.", selectionAsString(frame));
4166 4166
4167 frame->moveRangeSelectionExtent(WebPoint(0, 0)); 4167 frame->moveRangeSelectionExtent(WebPoint(0, 0));
4168 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame)); 4168 EXPECT_EQ("16-char header. This text is initially selected.", selectionAsStr ing(frame));
4169 4169
4170 frame->executeCommand(WebString::fromUTF8("Unselect")); 4170 frame->executeCommand(WebString::fromUTF8("Unselect"));
4171 EXPECT_EQ("", selectionAsString(frame)); 4171 EXPECT_EQ("", selectionAsString(frame));
4172 } 4172 }
4173 4173
4174 TEST_P(ParametrizedWebFrameTest, MoveRangeSelectionExtentCannotCollapse) 4174 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtentCannotCollapse)
4175 { 4175 {
4176 WebLocalFrameImpl* frame; 4176 WebLocalFrameImpl* frame;
4177 WebRect startWebRect; 4177 WebRect startWebRect;
4178 WebRect endWebRect; 4178 WebRect endWebRect;
4179 4179
4180 registerMockedHttpURLLoad("move_range_selection_extent.html"); 4180 registerMockedHttpURLLoad("move_range_selection_extent.html");
4181 4181
4182 FrameTestHelpers::WebViewHelper webViewHelper(this); 4182 FrameTestHelpers::WebViewHelper webViewHelper(this);
4183 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper); 4183 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent.html ", &webViewHelper);
4184 frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); 4184 frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame());
4185 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4185 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4186 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4186 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4187 4187
4188 frame->moveRangeSelectionExtent(bottomRightMinusOne(startWebRect)); 4188 frame->moveRangeSelectionExtent(bottomRightMinusOne(startWebRect));
4189 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4189 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4190 4190
4191 // Reset with swapped base and extent. 4191 // Reset with swapped base and extent.
4192 frame->selectRange(topLeft(endWebRect), bottomRightMinusOne(startWebRect)); 4192 frame->selectRange(topLeft(endWebRect), bottomRightMinusOne(startWebRect));
4193 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4193 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4194 4194
4195 frame->moveRangeSelectionExtent(bottomRightMinusOne(endWebRect)); 4195 frame->moveRangeSelectionExtent(bottomRightMinusOne(endWebRect));
4196 EXPECT_EQ("This text is initially selected.", selectionAsString(frame)); 4196 EXPECT_EQ("This text is initially selected.", selectionAsString(frame));
4197 } 4197 }
4198 4198
4199 TEST_P(ParametrizedWebFrameTest, MoveRangeSelectionExtentScollsInputField) 4199 TEST_P(ParameterizedWebFrameTest, MoveRangeSelectionExtentScollsInputField)
4200 { 4200 {
4201 WebLocalFrameImpl* frame; 4201 WebLocalFrameImpl* frame;
4202 WebRect startWebRect; 4202 WebRect startWebRect;
4203 WebRect endWebRect; 4203 WebRect endWebRect;
4204 4204
4205 registerMockedHttpURLLoad("move_range_selection_extent_input_field.html"); 4205 registerMockedHttpURLLoad("move_range_selection_extent_input_field.html");
4206 4206
4207 FrameTestHelpers::WebViewHelper webViewHelper(this); 4207 FrameTestHelpers::WebViewHelper webViewHelper(this);
4208 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent_inpu t_field.html", &webViewHelper); 4208 initializeTextSelectionWebView(m_baseURL + "move_range_selection_extent_inpu t_field.html", &webViewHelper);
4209 frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); 4209 frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame());
4210 EXPECT_EQ("Length", selectionAsString(frame)); 4210 EXPECT_EQ("Length", selectionAsString(frame));
4211 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect); 4211 webViewHelper.webView()->selectionBounds(startWebRect, endWebRect);
4212 4212
4213 EXPECT_EQ(0, frame->frame()->selection().rootEditableElement()->scrollLeft() ); 4213 EXPECT_EQ(0, frame->frame()->selection().rootEditableElement()->scrollLeft() );
4214 frame->moveRangeSelectionExtent(WebPoint(endWebRect.x + 500, endWebRect.y)); 4214 frame->moveRangeSelectionExtent(WebPoint(endWebRect.x + 500, endWebRect.y));
4215 EXPECT_GE(frame->frame()->selection().rootEditableElement()->scrollLeft(), 1 ); 4215 EXPECT_GE(frame->frame()->selection().rootEditableElement()->scrollLeft(), 1 );
4216 EXPECT_EQ("Lengthy text goes here.", selectionAsString(frame)); 4216 EXPECT_EQ("Lengthy text goes here.", selectionAsString(frame));
4217 } 4217 }
4218 4218
4219 static int computeOffset(LayoutObject* layoutObject, int x, int y) 4219 static int computeOffset(LayoutObject* layoutObject, int x, int y)
4220 { 4220 {
4221 return VisiblePosition(layoutObject->positionForPoint(LayoutPoint(x, y))).de epEquivalent().computeOffsetInContainerNode(); 4221 return VisiblePosition(layoutObject->positionForPoint(LayoutPoint(x, y))).de epEquivalent().computeOffsetInContainerNode();
4222 } 4222 }
4223 4223
4224 // positionForPoint returns the wrong values for contenteditable spans. See 4224 // positionForPoint returns the wrong values for contenteditable spans. See
4225 // http://crbug.com/238334. 4225 // http://crbug.com/238334.
4226 TEST_P(ParametrizedWebFrameTest, DISABLED_PositionForPointTest) 4226 TEST_P(ParameterizedWebFrameTest, DISABLED_PositionForPointTest)
4227 { 4227 {
4228 registerMockedHttpURLLoad("select_range_span_editable.html"); 4228 registerMockedHttpURLLoad("select_range_span_editable.html");
4229 FrameTestHelpers::WebViewHelper webViewHelper(this); 4229 FrameTestHelpers::WebViewHelper webViewHelper(this);
4230 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper); 4230 initializeTextSelectionWebView(m_baseURL + "select_range_span_editable.html" , &webViewHelper);
4231 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 4231 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
4232 LayoutObject* layoutObject = mainFrame->frame()->selection().rootEditableEle ment()->layoutObject(); 4232 LayoutObject* layoutObject = mainFrame->frame()->selection().rootEditableEle ment()->layoutObject();
4233 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1)); 4233 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1));
4234 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000)); 4234 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000));
4235 4235
4236 registerMockedHttpURLLoad("select_range_div_editable.html"); 4236 registerMockedHttpURLLoad("select_range_div_editable.html");
4237 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper); 4237 initializeTextSelectionWebView(m_baseURL + "select_range_div_editable.html", &webViewHelper);
4238 mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame()); 4238 mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame());
4239 layoutObject = mainFrame->frame()->selection().rootEditableElement()->layout Object(); 4239 layoutObject = mainFrame->frame()->selection().rootEditableElement()->layout Object();
4240 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1)); 4240 EXPECT_EQ(0, computeOffset(layoutObject, -1, -1));
4241 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000)); 4241 EXPECT_EQ(64, computeOffset(layoutObject, 1000, 1000));
4242 } 4242 }
4243 4243
4244 #if !OS(MACOSX) && !OS(LINUX) 4244 #if !OS(MACOSX) && !OS(LINUX)
4245 TEST_P(ParametrizedWebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved) 4245 TEST_P(ParameterizedWebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved)
4246 { 4246 {
4247 registerMockedHttpURLLoad("move_caret.html"); 4247 registerMockedHttpURLLoad("move_caret.html");
4248 4248
4249 FrameTestHelpers::WebViewHelper webViewHelper(this); 4249 FrameTestHelpers::WebViewHelper webViewHelper(this);
4250 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper ); 4250 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper );
4251 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 4251 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
4252 4252
4253 WebRect initialStartRect; 4253 WebRect initialStartRect;
4254 WebRect initialEndRect; 4254 WebRect initialEndRect;
4255 WebRect startRect; 4255 WebRect startRect;
(...skipping 23 matching lines...) Expand all
4279 EXPECT_EQ(startRect, initialStartRect); 4279 EXPECT_EQ(startRect, initialStartRect);
4280 EXPECT_EQ(endRect, initialEndRect); 4280 EXPECT_EQ(endRect, initialEndRect);
4281 4281
4282 movedEnd.y -= 80; 4282 movedEnd.y -= 80;
4283 frame->selectRange(topLeft(initialStartRect), movedEnd); 4283 frame->selectRange(topLeft(initialStartRect), movedEnd);
4284 webViewHelper.webView()->selectionBounds(startRect, endRect); 4284 webViewHelper.webView()->selectionBounds(startRect, endRect);
4285 EXPECT_EQ(startRect, initialStartRect); 4285 EXPECT_EQ(startRect, initialStartRect);
4286 EXPECT_EQ(endRect, initialEndRect); 4286 EXPECT_EQ(endRect, initialEndRect);
4287 } 4287 }
4288 4288
4289 TEST_P(ParametrizedWebFrameTest, MoveCaretStaysHorizontallyAlignedWhenMoved) 4289 TEST_P(ParameterizedWebFrameTest, MoveCaretStaysHorizontallyAlignedWhenMoved)
4290 { 4290 {
4291 WebLocalFrameImpl* frame; 4291 WebLocalFrameImpl* frame;
4292 registerMockedHttpURLLoad("move_caret.html"); 4292 registerMockedHttpURLLoad("move_caret.html");
4293 4293
4294 FrameTestHelpers::WebViewHelper webViewHelper(this); 4294 FrameTestHelpers::WebViewHelper webViewHelper(this);
4295 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper ); 4295 initializeTextSelectionWebView(m_baseURL + "move_caret.html", &webViewHelper );
4296 frame = (WebLocalFrameImpl*)webViewHelper.webView()->mainFrame(); 4296 frame = (WebLocalFrameImpl*)webViewHelper.webView()->mainFrame();
4297 4297
4298 WebRect initialStartRect; 4298 WebRect initialStartRect;
4299 WebRect initialEndRect; 4299 WebRect initialEndRect;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
4472 TEST_F(CompositedSelectionBoundsTest, Transformed) { runTest("composited_selecti on_bounds_transformed.html"); } 4472 TEST_F(CompositedSelectionBoundsTest, Transformed) { runTest("composited_selecti on_bounds_transformed.html"); }
4473 TEST_F(CompositedSelectionBoundsTest, SplitLayer) { runTest("composited_selectio n_bounds_split_layer.html"); } 4473 TEST_F(CompositedSelectionBoundsTest, SplitLayer) { runTest("composited_selectio n_bounds_split_layer.html"); }
4474 TEST_F(CompositedSelectionBoundsTest, EmptyLayer) { runTest("composited_selectio n_bounds_empty_layer.html"); } 4474 TEST_F(CompositedSelectionBoundsTest, EmptyLayer) { runTest("composited_selectio n_bounds_empty_layer.html"); }
4475 TEST_F(CompositedSelectionBoundsTest, Iframe) { runTestWithMultipleFiles("compos ited_selection_bounds_iframe.html", "composited_selection_bounds_basic.html", nu llptr); } 4475 TEST_F(CompositedSelectionBoundsTest, Iframe) { runTestWithMultipleFiles("compos ited_selection_bounds_iframe.html", "composited_selection_bounds_basic.html", nu llptr); }
4476 TEST_F(CompositedSelectionBoundsTest, DetachedFrame) { runTest("composited_selec tion_bounds_detached_frame.html"); } 4476 TEST_F(CompositedSelectionBoundsTest, DetachedFrame) { runTest("composited_selec tion_bounds_detached_frame.html"); }
4477 TEST_F(CompositedSelectionBoundsTest, Editable) { runTest("composited_selection_ bounds_editable.html"); } 4477 TEST_F(CompositedSelectionBoundsTest, Editable) { runTest("composited_selection_ bounds_editable.html"); }
4478 TEST_F(CompositedSelectionBoundsTest, EditableDiv) { runTest("composited_selecti on_bounds_editable_div.html"); } 4478 TEST_F(CompositedSelectionBoundsTest, EditableDiv) { runTest("composited_selecti on_bounds_editable_div.html"); }
4479 TEST_F(CompositedSelectionBoundsTest, EmptyEditableInput) { runTest("composited_ selection_bounds_empty_editable_input.html"); } 4479 TEST_F(CompositedSelectionBoundsTest, EmptyEditableInput) { runTest("composited_ selection_bounds_empty_editable_input.html"); }
4480 TEST_F(CompositedSelectionBoundsTest, EmptyEditableArea) { runTest("composited_s election_bounds_empty_editable_area.html"); } 4480 TEST_F(CompositedSelectionBoundsTest, EmptyEditableArea) { runTest("composited_s election_bounds_empty_editable_area.html"); }
4481 4481
4482 TEST_P(ParametrizedWebFrameTest, CompositedSelectionBoundsCleared) 4482 TEST_P(ParameterizedWebFrameTest, CompositedSelectionBoundsCleared)
4483 { 4483 {
4484 RuntimeEnabledFeatures::setCompositedSelectionUpdateEnabled(true); 4484 RuntimeEnabledFeatures::setCompositedSelectionUpdateEnabled(true);
4485 4485
4486 registerMockedHttpURLLoad("select_range_basic.html"); 4486 registerMockedHttpURLLoad("select_range_basic.html");
4487 registerMockedHttpURLLoad("select_range_scroll.html"); 4487 registerMockedHttpURLLoad("select_range_scroll.html");
4488 4488
4489 int viewWidth = 500; 4489 int viewWidth = 500;
4490 int viewHeight = 500; 4490 int viewHeight = 500;
4491 4491
4492 CompositedSelectionBoundsTestWebViewClient fakeSelectionWebViewClient; 4492 CompositedSelectionBoundsTestWebViewClient fakeSelectionWebViewClient;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
4556 { 4556 {
4557 WebGestureEvent event; 4557 WebGestureEvent event;
4558 event.type = WebInputEvent::GestureTap; 4558 event.type = WebInputEvent::GestureTap;
4559 event.x = x; 4559 event.x = x;
4560 event.y = y; 4560 event.y = y;
4561 event.data.tap.width = 50; 4561 event.data.tap.width = 50;
4562 event.data.tap.height = 50; 4562 event.data.tap.height = 50;
4563 return event; 4563 return event;
4564 } 4564 }
4565 4565
4566 TEST_P(ParametrizedWebFrameTest, DisambiguationPopup) 4566 TEST_P(ParameterizedWebFrameTest, DisambiguationPopup)
4567 { 4567 {
4568 const std::string htmlFile = "disambiguation_popup.html"; 4568 const std::string htmlFile = "disambiguation_popup.html";
4569 registerMockedHttpURLLoad(htmlFile); 4569 registerMockedHttpURLLoad(htmlFile);
4570 4570
4571 DisambiguationPopupTestWebViewClient client; 4571 DisambiguationPopupTestWebViewClient client;
4572 4572
4573 // Make sure we initialize to minimum scale, even if the window size 4573 // Make sure we initialize to minimum scale, even if the window size
4574 // only becomes available after the load begins. 4574 // only becomes available after the load begins.
4575 FrameTestHelpers::WebViewHelper webViewHelper(this); 4575 FrameTestHelpers::WebViewHelper webViewHelper(this);
4576 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client); 4576 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
4611 // multi-target-tap. 4611 // multi-target-tap.
4612 webViewHelper.webView()->settings()->setMultiTargetTapNotificationEnabled(fa lse); 4612 webViewHelper.webView()->settings()->setMultiTargetTapNotificationEnabled(fa lse);
4613 4613
4614 for (int i = 0; i <= 46; i++) { 4614 for (int i = 0; i <= 46; i++) {
4615 client.resetTriggered(); 4615 client.resetTriggered();
4616 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590)); 4616 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590));
4617 EXPECT_FALSE(client.triggered()); 4617 EXPECT_FALSE(client.triggered());
4618 } 4618 }
4619 } 4619 }
4620 4620
4621 TEST_P(ParametrizedWebFrameTest, DisambiguationPopupNoContainer) 4621 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupNoContainer)
4622 { 4622 {
4623 registerMockedHttpURLLoad("disambiguation_popup_no_container.html"); 4623 registerMockedHttpURLLoad("disambiguation_popup_no_container.html");
4624 4624
4625 DisambiguationPopupTestWebViewClient client; 4625 DisambiguationPopupTestWebViewClient client;
4626 4626
4627 // Make sure we initialize to minimum scale, even if the window size 4627 // Make sure we initialize to minimum scale, even if the window size
4628 // only becomes available after the load begins. 4628 // only becomes available after the load begins.
4629 FrameTestHelpers::WebViewHelper webViewHelper(this); 4629 FrameTestHelpers::WebViewHelper webViewHelper(this);
4630 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_no_contain er.html", true, 0, &client); 4630 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_no_contain er.html", true, 0, &client);
4631 webViewHelper.webView()->resize(WebSize(1000, 1000)); 4631 webViewHelper.webView()->resize(WebSize(1000, 1000));
4632 webViewHelper.webView()->layout(); 4632 webViewHelper.webView()->layout();
4633 4633
4634 client.resetTriggered(); 4634 client.resetTriggered();
4635 webViewHelper.webView()->handleInputEvent(fatTap(50, 50)); 4635 webViewHelper.webView()->handleInputEvent(fatTap(50, 50));
4636 EXPECT_FALSE(client.triggered()); 4636 EXPECT_FALSE(client.triggered());
4637 } 4637 }
4638 4638
4639 TEST_P(ParametrizedWebFrameTest, DisambiguationPopupMobileSite) 4639 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupMobileSite)
4640 { 4640 {
4641 UseMockScrollbarSettings mockScrollbarSettings; 4641 UseMockScrollbarSettings mockScrollbarSettings;
4642 const std::string htmlFile = "disambiguation_popup_mobile_site.html"; 4642 const std::string htmlFile = "disambiguation_popup_mobile_site.html";
4643 registerMockedHttpURLLoad(htmlFile); 4643 registerMockedHttpURLLoad(htmlFile);
4644 4644
4645 DisambiguationPopupTestWebViewClient client; 4645 DisambiguationPopupTestWebViewClient client;
4646 4646
4647 // Make sure we initialize to minimum scale, even if the window size 4647 // Make sure we initialize to minimum scale, even if the window size
4648 // only becomes available after the load begins. 4648 // only becomes available after the load begins.
4649 FrameTestHelpers::WebViewHelper webViewHelper(this); 4649 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 15 matching lines...) Expand all
4665 EXPECT_FALSE(client.triggered()); 4665 EXPECT_FALSE(client.triggered());
4666 } 4666 }
4667 4667
4668 for (int i = 0; i <= 46; i++) { 4668 for (int i = 0; i <= 46; i++) {
4669 client.resetTriggered(); 4669 client.resetTriggered();
4670 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590)); 4670 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590));
4671 EXPECT_FALSE(client.triggered()); 4671 EXPECT_FALSE(client.triggered());
4672 } 4672 }
4673 } 4673 }
4674 4674
4675 TEST_P(ParametrizedWebFrameTest, DisambiguationPopupViewportSite) 4675 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupViewportSite)
4676 { 4676 {
4677 UseMockScrollbarSettings mockScrollbarSettings; 4677 UseMockScrollbarSettings mockScrollbarSettings;
4678 const std::string htmlFile = "disambiguation_popup_viewport_site.html"; 4678 const std::string htmlFile = "disambiguation_popup_viewport_site.html";
4679 registerMockedHttpURLLoad(htmlFile); 4679 registerMockedHttpURLLoad(htmlFile);
4680 4680
4681 DisambiguationPopupTestWebViewClient client; 4681 DisambiguationPopupTestWebViewClient client;
4682 4682
4683 // Make sure we initialize to minimum scale, even if the window size 4683 // Make sure we initialize to minimum scale, even if the window size
4684 // only becomes available after the load begins. 4684 // only becomes available after the load begins.
4685 FrameTestHelpers::WebViewHelper webViewHelper(this); 4685 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
4752 EXPECT_TRUE(client.triggered()); 4752 EXPECT_TRUE(client.triggered());
4753 4753
4754 // The same tap shouldn't trigger didTapMultipleTargets() after disabling th e notification for 4754 // The same tap shouldn't trigger didTapMultipleTargets() after disabling th e notification for
4755 // multi-target-tap. 4755 // multi-target-tap.
4756 webViewHelper.webView()->settings()->setMultiTargetTapNotificationEnabled(fa lse); 4756 webViewHelper.webView()->settings()->setMultiTargetTapNotificationEnabled(fa lse);
4757 client.resetTriggered(); 4757 client.resetTriggered();
4758 webViewHelper.webView()->handleInputEvent(fatTap(10, 60)); 4758 webViewHelper.webView()->handleInputEvent(fatTap(10, 60));
4759 EXPECT_FALSE(client.triggered()); 4759 EXPECT_FALSE(client.triggered());
4760 } 4760 }
4761 4761
4762 TEST_P(ParametrizedWebFrameTest, DisambiguationPopupBlacklist) 4762 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupBlacklist)
4763 { 4763 {
4764 const unsigned viewportWidth = 500; 4764 const unsigned viewportWidth = 500;
4765 const unsigned viewportHeight = 1000; 4765 const unsigned viewportHeight = 1000;
4766 const unsigned divHeight = 100; 4766 const unsigned divHeight = 100;
4767 const std::string htmlFile = "disambiguation_popup_blacklist.html"; 4767 const std::string htmlFile = "disambiguation_popup_blacklist.html";
4768 registerMockedHttpURLLoad(htmlFile); 4768 registerMockedHttpURLLoad(htmlFile);
4769 4769
4770 DisambiguationPopupTestWebViewClient client; 4770 DisambiguationPopupTestWebViewClient client;
4771 4771
4772 // Make sure we initialize to minimum scale, even if the window size 4772 // Make sure we initialize to minimum scale, even if the window size
(...skipping 12 matching lines...) Expand all
4785 client.resetTriggered(); 4785 client.resetTriggered();
4786 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t)); 4786 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t));
4787 EXPECT_TRUE(client.triggered()); 4787 EXPECT_TRUE(client.triggered());
4788 4788
4789 // The third div container should be blacklisted if you click on the link it contains. 4789 // The third div container should be blacklisted if you click on the link it contains.
4790 client.resetTriggered(); 4790 client.resetTriggered();
4791 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t * 3.25)); 4791 webViewHelper.webView()->handleInputEvent(fatTap(viewportWidth / 2, divHeigh t * 3.25));
4792 EXPECT_FALSE(client.triggered()); 4792 EXPECT_FALSE(client.triggered());
4793 } 4793 }
4794 4794
4795 TEST_P(ParametrizedWebFrameTest, DisambiguationPopupPageScale) 4795 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupPageScale)
4796 { 4796 {
4797 registerMockedHttpURLLoad("disambiguation_popup_page_scale.html"); 4797 registerMockedHttpURLLoad("disambiguation_popup_page_scale.html");
4798 4798
4799 DisambiguationPopupTestWebViewClient client; 4799 DisambiguationPopupTestWebViewClient client;
4800 4800
4801 // Make sure we initialize to minimum scale, even if the window size 4801 // Make sure we initialize to minimum scale, even if the window size
4802 // only becomes available after the load begins. 4802 // only becomes available after the load begins.
4803 FrameTestHelpers::WebViewHelper webViewHelper(this); 4803 FrameTestHelpers::WebViewHelper webViewHelper(this);
4804 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_page_scale .html", true, 0, &client); 4804 webViewHelper.initializeAndLoad(m_baseURL + "disambiguation_popup_page_scale .html", true, 0, &client);
4805 webViewHelper.webView()->resize(WebSize(1000, 1000)); 4805 webViewHelper.webView()->resize(WebSize(1000, 1000));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4842 if (frame->dataSource()->response().url() != WebURL(URLTestHelpers::toKU RL("about:blank"))) 4842 if (frame->dataSource()->response().url() != WebURL(URLTestHelpers::toKU RL("about:blank")))
4843 m_commitCalled = true; 4843 m_commitCalled = true;
4844 } 4844 }
4845 4845
4846 bool commitCalled() const { return m_commitCalled; } 4846 bool commitCalled() const { return m_commitCalled; }
4847 4847
4848 private: 4848 private:
4849 bool m_commitCalled; 4849 bool m_commitCalled;
4850 }; 4850 };
4851 4851
4852 TEST_P(ParametrizedWebFrameTest, ReplaceNavigationAfterHistoryNavigation) 4852 TEST_P(ParameterizedWebFrameTest, ReplaceNavigationAfterHistoryNavigation)
4853 { 4853 {
4854 TestSubstituteDataWebFrameClient webFrameClient; 4854 TestSubstituteDataWebFrameClient webFrameClient;
4855 4855
4856 FrameTestHelpers::WebViewHelper webViewHelper(this); 4856 FrameTestHelpers::WebViewHelper webViewHelper(this);
4857 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient); 4857 webViewHelper.initializeAndLoad("about:blank", true, &webFrameClient);
4858 WebFrame* frame = webViewHelper.webView()->mainFrame(); 4858 WebFrame* frame = webViewHelper.webView()->mainFrame();
4859 4859
4860 // Load a url as a history navigation that will return an error. TestSubstit uteDataWebFrameClient 4860 // Load a url as a history navigation that will return an error. TestSubstit uteDataWebFrameClient
4861 // will start a SubstituteData load in response to the load failure, which s hould get fully committed. 4861 // will start a SubstituteData load in response to the load failure, which s hould get fully committed.
4862 // Due to https://bugs.webkit.org/show_bug.cgi?id=91685, FrameLoader::didRec eiveData() wasn't getting 4862 // Due to https://bugs.webkit.org/show_bug.cgi?id=91685, FrameLoader::didRec eiveData() wasn't getting
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4900 4900
4901 virtual void willInsertBody(WebLocalFrame*) override 4901 virtual void willInsertBody(WebLocalFrame*) override
4902 { 4902 {
4903 m_numBodies++; 4903 m_numBodies++;
4904 } 4904 }
4905 4905
4906 int m_numBodies; 4906 int m_numBodies;
4907 bool m_didLoad; 4907 bool m_didLoad;
4908 }; 4908 };
4909 4909
4910 TEST_P(ParametrizedWebFrameTest, HTMLDocument) 4910 TEST_P(ParameterizedWebFrameTest, HTMLDocument)
4911 { 4911 {
4912 registerMockedHttpURLLoad("clipped-body.html"); 4912 registerMockedHttpURLLoad("clipped-body.html");
4913 4913
4914 TestWillInsertBodyWebFrameClient webFrameClient; 4914 TestWillInsertBodyWebFrameClient webFrameClient;
4915 FrameTestHelpers::WebViewHelper webViewHelper(this); 4915 FrameTestHelpers::WebViewHelper webViewHelper(this);
4916 webViewHelper.initializeAndLoad(m_baseURL + "clipped-body.html", false, &web FrameClient); 4916 webViewHelper.initializeAndLoad(m_baseURL + "clipped-body.html", false, &web FrameClient);
4917 4917
4918 EXPECT_TRUE(webFrameClient.m_didLoad); 4918 EXPECT_TRUE(webFrameClient.m_didLoad);
4919 EXPECT_EQ(1, webFrameClient.m_numBodies); 4919 EXPECT_EQ(1, webFrameClient.m_numBodies);
4920 } 4920 }
4921 4921
4922 TEST_P(ParametrizedWebFrameTest, EmptyDocument) 4922 TEST_P(ParameterizedWebFrameTest, EmptyDocument)
4923 { 4923 {
4924 registerMockedHttpURLLoad("pageserializer/green_rectangle.svg"); 4924 registerMockedHttpURLLoad("pageserializer/green_rectangle.svg");
4925 4925
4926 TestWillInsertBodyWebFrameClient webFrameClient; 4926 TestWillInsertBodyWebFrameClient webFrameClient;
4927 FrameTestHelpers::WebViewHelper webViewHelper(this); 4927 FrameTestHelpers::WebViewHelper webViewHelper(this);
4928 webViewHelper.initialize(false, &webFrameClient); 4928 webViewHelper.initialize(false, &webFrameClient);
4929 4929
4930 EXPECT_FALSE(webFrameClient.m_didLoad); 4930 EXPECT_FALSE(webFrameClient.m_didLoad);
4931 EXPECT_EQ(1, webFrameClient.m_numBodies); // The empty document that a new f rame starts with triggers this. 4931 EXPECT_EQ(1, webFrameClient.m_numBodies); // The empty document that a new f rame starts with triggers this.
4932 } 4932 }
4933 4933
4934 TEST_P(ParametrizedWebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSelec tion) 4934 TEST_P(ParameterizedWebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSele ction)
4935 { 4935 {
4936 FrameTestHelpers::WebViewHelper webViewHelper(this); 4936 FrameTestHelpers::WebViewHelper webViewHelper(this);
4937 webViewHelper.initializeAndLoad("about:blank", true); 4937 webViewHelper.initializeAndLoad("about:blank", true);
4938 WebFrame* frame = webViewHelper.webView()->mainFrame(); 4938 WebFrame* frame = webViewHelper.webView()->mainFrame();
4939 4939
4940 // This test passes if this doesn't crash. 4940 // This test passes if this doesn't crash.
4941 frame->moveCaretSelection(WebPoint(0, 0)); 4941 frame->moveCaretSelection(WebPoint(0, 0));
4942 } 4942 }
4943 4943
4944 class SpellCheckClient : public WebSpellCheckClient { 4944 class SpellCheckClient : public WebSpellCheckClient {
4945 public: 4945 public:
4946 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { } 4946 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { }
4947 virtual ~SpellCheckClient() { } 4947 virtual ~SpellCheckClient() { }
4948 virtual void requestCheckingOfText(const WebString&, const WebVector<uint32_ t>&, const WebVector<unsigned>&, WebTextCheckingCompletion* completion) override 4948 virtual void requestCheckingOfText(const WebString&, const WebVector<uint32_ t>&, const WebVector<unsigned>&, WebTextCheckingCompletion* completion) override
4949 { 4949 {
4950 ++m_numberOfTimesChecked; 4950 ++m_numberOfTimesChecked;
4951 Vector<WebTextCheckingResult> results; 4951 Vector<WebTextCheckingResult> results;
4952 const int misspellingStartOffset = 1; 4952 const int misspellingStartOffset = 1;
4953 const int misspellingLength = 8; 4953 const int misspellingLength = 8;
4954 results.append(WebTextCheckingResult(WebTextDecorationTypeSpelling, miss pellingStartOffset, misspellingLength, WebString(), m_hash)); 4954 results.append(WebTextCheckingResult(WebTextDecorationTypeSpelling, miss pellingStartOffset, misspellingLength, WebString(), m_hash));
4955 completion->didFinishCheckingText(results); 4955 completion->didFinishCheckingText(results);
4956 } 4956 }
4957 int numberOfTimesChecked() const { return m_numberOfTimesChecked; } 4957 int numberOfTimesChecked() const { return m_numberOfTimesChecked; }
4958 private: 4958 private:
4959 int m_numberOfTimesChecked; 4959 int m_numberOfTimesChecked;
4960 uint32_t m_hash; 4960 uint32_t m_hash;
4961 }; 4961 };
4962 4962
4963 TEST_P(ParametrizedWebFrameTest, ReplaceMisspelledRange) 4963 TEST_P(ParameterizedWebFrameTest, ReplaceMisspelledRange)
4964 { 4964 {
4965 registerMockedHttpURLLoad("spell.html"); 4965 registerMockedHttpURLLoad("spell.html");
4966 FrameTestHelpers::WebViewHelper webViewHelper(this); 4966 FrameTestHelpers::WebViewHelper webViewHelper(this);
4967 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 4967 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
4968 SpellCheckClient spellcheck; 4968 SpellCheckClient spellcheck;
4969 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 4969 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
4970 4970
4971 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 4971 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
4972 Document* document = frame->frame()->document(); 4972 Document* document = frame->frame()->document();
4973 Element* element = document->getElementById("data"); 4973 Element* element = document->getElementById("data");
(...skipping 10 matching lines...) Expand all
4984 frame->selectRange(WebRange::fromDocumentRange(frame, allTextBeginOffset, al lTextLength)); 4984 frame->selectRange(WebRange::fromDocumentRange(frame, allTextBeginOffset, al lTextLength));
4985 RefPtrWillBeRawPtr<Range> selectionRange = frame->frame()->selection().toNor malizedRange(); 4985 RefPtrWillBeRawPtr<Range> selectionRange = frame->frame()->selection().toNor malizedRange();
4986 4986
4987 EXPECT_EQ(1, spellcheck.numberOfTimesChecked()); 4987 EXPECT_EQ(1, spellcheck.numberOfTimesChecked());
4988 EXPECT_EQ(1U, document->markers().markersInRange(selectionRange.get(), Docum entMarker::Spelling).size()); 4988 EXPECT_EQ(1U, document->markers().markersInRange(selectionRange.get(), Docum entMarker::Spelling).size());
4989 4989
4990 frame->replaceMisspelledRange("welcome"); 4990 frame->replaceMisspelledRange("welcome");
4991 EXPECT_EQ("_welcome_.", frame->contentAsText(std::numeric_limits<size_t>::ma x()).utf8()); 4991 EXPECT_EQ("_welcome_.", frame->contentAsText(std::numeric_limits<size_t>::ma x()).utf8());
4992 } 4992 }
4993 4993
4994 TEST_P(ParametrizedWebFrameTest, RemoveSpellingMarkers) 4994 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkers)
4995 { 4995 {
4996 registerMockedHttpURLLoad("spell.html"); 4996 registerMockedHttpURLLoad("spell.html");
4997 FrameTestHelpers::WebViewHelper webViewHelper(this); 4997 FrameTestHelpers::WebViewHelper webViewHelper(this);
4998 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 4998 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
4999 SpellCheckClient spellcheck; 4999 SpellCheckClient spellcheck;
5000 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5000 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5001 5001
5002 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 5002 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
5003 Document* document = frame->frame()->document(); 5003 Document* document = frame->frame()->document();
5004 Element* element = document->getElementById("data"); 5004 Element* element = document->getElementById("data");
5005 5005
5006 webViewHelper.webView()->settings()->setAsynchronousSpellCheckingEnabled(tru e); 5006 webViewHelper.webView()->settings()->setAsynchronousSpellCheckingEnabled(tru e);
5007 webViewHelper.webView()->settings()->setUnifiedTextCheckerEnabled(true); 5007 webViewHelper.webView()->settings()->setUnifiedTextCheckerEnabled(true);
5008 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5008 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5009 5009
5010 element->focus(); 5010 element->focus();
5011 document->execCommand("InsertText", false, "_wellcome_."); 5011 document->execCommand("InsertText", false, "_wellcome_.");
5012 5012
5013 frame->removeSpellingMarkers(); 5013 frame->removeSpellingMarkers();
5014 5014
5015 const int allTextBeginOffset = 0; 5015 const int allTextBeginOffset = 0;
5016 const int allTextLength = 11; 5016 const int allTextLength = 11;
5017 frame->selectRange(WebRange::fromDocumentRange(frame, allTextBeginOffset, al lTextLength)); 5017 frame->selectRange(WebRange::fromDocumentRange(frame, allTextBeginOffset, al lTextLength));
5018 RefPtrWillBeRawPtr<Range> selectionRange = frame->frame()->selection().toNor malizedRange(); 5018 RefPtrWillBeRawPtr<Range> selectionRange = frame->frame()->selection().toNor malizedRange();
5019 5019
5020 EXPECT_EQ(0U, document->markers().markersInRange(selectionRange.get(), Docum entMarker::Spelling).size()); 5020 EXPECT_EQ(0U, document->markers().markersInRange(selectionRange.get(), Docum entMarker::Spelling).size());
5021 } 5021 }
5022 5022
5023 TEST_P(ParametrizedWebFrameTest, RemoveSpellingMarkersUnderWords) 5023 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkersUnderWords)
5024 { 5024 {
5025 registerMockedHttpURLLoad("spell.html"); 5025 registerMockedHttpURLLoad("spell.html");
5026 FrameTestHelpers::WebViewHelper webViewHelper(this); 5026 FrameTestHelpers::WebViewHelper webViewHelper(this);
5027 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5027 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5028 SpellCheckClient spellcheck; 5028 SpellCheckClient spellcheck;
5029 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5029 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5030 5030
5031 LocalFrame* frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame() )->frame(); 5031 LocalFrame* frame = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame() )->frame();
5032 Document* document = frame->document(); 5032 Document* document = frame->document();
5033 Element* element = document->getElementById("data"); 5033 Element* element = document->getElementById("data");
(...skipping 11 matching lines...) Expand all
5045 5045
5046 Vector<String> words; 5046 Vector<String> words;
5047 words.append("wellcome"); 5047 words.append("wellcome");
5048 frame->removeSpellingMarkersUnderWords(words); 5048 frame->removeSpellingMarkersUnderWords(words);
5049 5049
5050 WebVector<uint32_t> documentMarkers2; 5050 WebVector<uint32_t> documentMarkers2;
5051 webViewHelper.webView()->spellingMarkers(&documentMarkers2); 5051 webViewHelper.webView()->spellingMarkers(&documentMarkers2);
5052 EXPECT_EQ(0U, documentMarkers2.size()); 5052 EXPECT_EQ(0U, documentMarkers2.size());
5053 } 5053 }
5054 5054
5055 TEST_P(ParametrizedWebFrameTest, MarkerHashIdentifiers) 5055 TEST_P(ParameterizedWebFrameTest, MarkerHashIdentifiers)
5056 { 5056 {
5057 registerMockedHttpURLLoad("spell.html"); 5057 registerMockedHttpURLLoad("spell.html");
5058 FrameTestHelpers::WebViewHelper webViewHelper(this); 5058 FrameTestHelpers::WebViewHelper webViewHelper(this);
5059 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5059 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5060 5060
5061 static const uint32_t kHash = 42; 5061 static const uint32_t kHash = 42;
5062 SpellCheckClient spellcheck(kHash); 5062 SpellCheckClient spellcheck(kHash);
5063 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5063 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5064 5064
5065 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 5065 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
5121 Vector<WebTextCheckingResult> results; 5121 Vector<WebTextCheckingResult> results;
5122 if (misspellingStartOffset >= 0 && misspellingLength > 0) 5122 if (misspellingStartOffset >= 0 && misspellingLength > 0)
5123 results.append(WebTextCheckingResult(type, misspellingStartOffset, m isspellingLength)); 5123 results.append(WebTextCheckingResult(type, misspellingStartOffset, m isspellingLength));
5124 m_completion->didFinishCheckingText(results); 5124 m_completion->didFinishCheckingText(results);
5125 m_completion = 0; 5125 m_completion = 0;
5126 } 5126 }
5127 5127
5128 WebTextCheckingCompletion* m_completion; 5128 WebTextCheckingCompletion* m_completion;
5129 }; 5129 };
5130 5130
5131 TEST_P(ParametrizedWebFrameTest, SlowSpellcheckMarkerPosition) 5131 TEST_P(ParameterizedWebFrameTest, SlowSpellcheckMarkerPosition)
5132 { 5132 {
5133 registerMockedHttpURLLoad("spell.html"); 5133 registerMockedHttpURLLoad("spell.html");
5134 FrameTestHelpers::WebViewHelper webViewHelper(this); 5134 FrameTestHelpers::WebViewHelper webViewHelper(this);
5135 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5135 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5136 5136
5137 StubbornSpellCheckClient spellcheck; 5137 StubbornSpellCheckClient spellcheck;
5138 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5138 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5139 5139
5140 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 5140 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
5141 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>(); 5141 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>();
(...skipping 11 matching lines...) Expand all
5153 5153
5154 spellcheck.kick(); 5154 spellcheck.kick();
5155 5155
5156 WebVector<uint32_t> documentMarkers; 5156 WebVector<uint32_t> documentMarkers;
5157 webViewHelper.webView()->spellingMarkers(&documentMarkers); 5157 webViewHelper.webView()->spellingMarkers(&documentMarkers);
5158 EXPECT_EQ(0U, documentMarkers.size()); 5158 EXPECT_EQ(0U, documentMarkers.size());
5159 } 5159 }
5160 5160
5161 // This test verifies that cancelling spelling request does not cause a 5161 // This test verifies that cancelling spelling request does not cause a
5162 // write-after-free when there's no spellcheck client set. 5162 // write-after-free when there's no spellcheck client set.
5163 TEST_P(ParametrizedWebFrameTest, CancelSpellingRequestCrash) 5163 TEST_P(ParameterizedWebFrameTest, CancelSpellingRequestCrash)
5164 { 5164 {
5165 registerMockedHttpURLLoad("spell.html"); 5165 registerMockedHttpURLLoad("spell.html");
5166 FrameTestHelpers::WebViewHelper webViewHelper(this); 5166 FrameTestHelpers::WebViewHelper webViewHelper(this);
5167 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5167 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5168 webViewHelper.webView()->setSpellCheckClient(0); 5168 webViewHelper.webView()->setSpellCheckClient(0);
5169 5169
5170 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 5170 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
5171 Document* document = frame->frame()->document(); 5171 Document* document = frame->frame()->document();
5172 Element* element = document->getElementById("data"); 5172 Element* element = document->getElementById("data");
5173 5173
5174 webViewHelper.webView()->settings()->setAsynchronousSpellCheckingEnabled(tru e); 5174 webViewHelper.webView()->settings()->setAsynchronousSpellCheckingEnabled(tru e);
5175 webViewHelper.webView()->settings()->setUnifiedTextCheckerEnabled(true); 5175 webViewHelper.webView()->settings()->setUnifiedTextCheckerEnabled(true);
5176 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5176 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5177 5177
5178 element->focus(); 5178 element->focus();
5179 frame->frame()->editor().replaceSelectionWithText("A", false, false); 5179 frame->frame()->editor().replaceSelectionWithText("A", false, false);
5180 frame->frame()->spellChecker().cancelCheck(); 5180 frame->frame()->spellChecker().cancelCheck();
5181 } 5181 }
5182 5182
5183 TEST_P(ParametrizedWebFrameTest, SpellcheckResultErasesMarkers) 5183 TEST_P(ParameterizedWebFrameTest, SpellcheckResultErasesMarkers)
5184 { 5184 {
5185 registerMockedHttpURLLoad("spell.html"); 5185 registerMockedHttpURLLoad("spell.html");
5186 FrameTestHelpers::WebViewHelper webViewHelper(this); 5186 FrameTestHelpers::WebViewHelper webViewHelper(this);
5187 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5187 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5188 5188
5189 StubbornSpellCheckClient spellcheck; 5189 StubbornSpellCheckClient spellcheck;
5190 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5190 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5191 5191
5192 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 5192 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
5193 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>(); 5193 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>();
5194 Document* document = frame->frame()->document(); 5194 Document* document = frame->frame()->document();
5195 Element* element = document->getElementById("data"); 5195 Element* element = document->getElementById("data");
5196 5196
5197 webViewHelper.webView()->settings()->setAsynchronousSpellCheckingEnabled(tru e); 5197 webViewHelper.webView()->settings()->setAsynchronousSpellCheckingEnabled(tru e);
5198 webViewHelper.webView()->settings()->setUnifiedTextCheckerEnabled(true); 5198 webViewHelper.webView()->settings()->setUnifiedTextCheckerEnabled(true);
5199 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin); 5199 webViewHelper.webView()->settings()->setEditingBehavior(WebSettings::Editing BehaviorWin);
5200 5200
5201 element->focus(); 5201 element->focus();
5202 document->execCommand("InsertText", false, "welcome "); 5202 document->execCommand("InsertText", false, "welcome ");
5203 document->markers().addMarker(rangeOfContents(element->toNode()).get(), Docu mentMarker::Spelling); 5203 document->markers().addMarker(rangeOfContents(element->toNode()).get(), Docu mentMarker::Spelling);
5204 document->markers().addMarker(rangeOfContents(element->toNode()).get(), Docu mentMarker::Grammar); 5204 document->markers().addMarker(rangeOfContents(element->toNode()).get(), Docu mentMarker::Grammar);
5205 document->markers().addMarker(rangeOfContents(element->toNode()).get(), Docu mentMarker::InvisibleSpellcheck); 5205 document->markers().addMarker(rangeOfContents(element->toNode()).get(), Docu mentMarker::InvisibleSpellcheck);
5206 EXPECT_EQ(3U, document->markers().markers().size()); 5206 EXPECT_EQ(3U, document->markers().markers().size());
5207 5207
5208 spellcheck.kickNoResults(); 5208 spellcheck.kickNoResults();
5209 EXPECT_EQ(0U, document->markers().markers().size()); 5209 EXPECT_EQ(0U, document->markers().markers().size());
5210 } 5210 }
5211 5211
5212 TEST_P(ParametrizedWebFrameTest, SpellcheckResultsSavedInDocument) 5212 TEST_P(ParameterizedWebFrameTest, SpellcheckResultsSavedInDocument)
5213 { 5213 {
5214 registerMockedHttpURLLoad("spell.html"); 5214 registerMockedHttpURLLoad("spell.html");
5215 FrameTestHelpers::WebViewHelper webViewHelper(this); 5215 FrameTestHelpers::WebViewHelper webViewHelper(this);
5216 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 5216 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
5217 5217
5218 StubbornSpellCheckClient spellcheck; 5218 StubbornSpellCheckClient spellcheck;
5219 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 5219 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
5220 5220
5221 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame()); 5221 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
5222 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>(); 5222 WebInputElement webInputElement = frame->document().getElementById("data").t o<WebInputElement>();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
5258 5258
5259 virtual void didAccessInitialDocument(WebLocalFrame* frame) 5259 virtual void didAccessInitialDocument(WebLocalFrame* frame)
5260 { 5260 {
5261 EXPECT_TRUE(!m_didAccessInitialDocument); 5261 EXPECT_TRUE(!m_didAccessInitialDocument);
5262 m_didAccessInitialDocument = true; 5262 m_didAccessInitialDocument = true;
5263 } 5263 }
5264 5264
5265 bool m_didAccessInitialDocument; 5265 bool m_didAccessInitialDocument;
5266 }; 5266 };
5267 5267
5268 TEST_P(ParametrizedWebFrameTest, DidAccessInitialDocumentBody) 5268 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBody)
5269 { 5269 {
5270 // FIXME: Why is this local webViewClient needed instead of the default 5270 // FIXME: Why is this local webViewClient needed instead of the default
5271 // WebViewHelper one? With out it there's some mysterious crash in the 5271 // WebViewHelper one? With out it there's some mysterious crash in the
5272 // WebViewHelper destructor. 5272 // WebViewHelper destructor.
5273 FrameTestHelpers::TestWebViewClient webViewClient; 5273 FrameTestHelpers::TestWebViewClient webViewClient;
5274 TestAccessInitialDocumentWebFrameClient webFrameClient; 5274 TestAccessInitialDocumentWebFrameClient webFrameClient;
5275 FrameTestHelpers::WebViewHelper webViewHelper(this); 5275 FrameTestHelpers::WebViewHelper webViewHelper(this);
5276 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5276 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5277 runPendingTasks(); 5277 runPendingTasks();
5278 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5278 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
(...skipping 11 matching lines...) Expand all
5290 runPendingTasks(); 5290 runPendingTasks();
5291 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5291 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5292 5292
5293 // Access the initial document again, to ensure we don't notify twice. 5293 // Access the initial document again, to ensure we don't notify twice.
5294 newView->mainFrame()->executeScript( 5294 newView->mainFrame()->executeScript(
5295 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 5295 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
5296 runPendingTasks(); 5296 runPendingTasks();
5297 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5297 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5298 } 5298 }
5299 5299
5300 TEST_P(ParametrizedWebFrameTest, DidAccessInitialDocumentNavigator) 5300 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentNavigator)
5301 { 5301 {
5302 // FIXME: Why is this local webViewClient needed instead of the default 5302 // FIXME: Why is this local webViewClient needed instead of the default
5303 // WebViewHelper one? With out it there's some mysterious crash in the 5303 // WebViewHelper one? With out it there's some mysterious crash in the
5304 // WebViewHelper destructor. 5304 // WebViewHelper destructor.
5305 FrameTestHelpers::TestWebViewClient webViewClient; 5305 FrameTestHelpers::TestWebViewClient webViewClient;
5306 TestAccessInitialDocumentWebFrameClient webFrameClient; 5306 TestAccessInitialDocumentWebFrameClient webFrameClient;
5307 FrameTestHelpers::WebViewHelper webViewHelper(this); 5307 FrameTestHelpers::WebViewHelper webViewHelper(this);
5308 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5308 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5309 runPendingTasks(); 5309 runPendingTasks();
5310 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5310 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5311 5311
5312 // Create another window that will try to access it. 5312 // Create another window that will try to access it.
5313 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5313 FrameTestHelpers::WebViewHelper newWebViewHelper(this);
5314 WebView* newView = newWebViewHelper.initialize(true); 5314 WebView* newView = newWebViewHelper.initialize(true);
5315 newView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame()); 5315 newView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame());
5316 runPendingTasks(); 5316 runPendingTasks();
5317 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5317 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5318 5318
5319 // Access the initial document to get to the navigator object. 5319 // Access the initial document to get to the navigator object.
5320 newView->mainFrame()->executeScript( 5320 newView->mainFrame()->executeScript(
5321 WebScriptSource("console.log(window.opener.navigator);")); 5321 WebScriptSource("console.log(window.opener.navigator);"));
5322 runPendingTasks(); 5322 runPendingTasks();
5323 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5323 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5324 } 5324 }
5325 5325
5326 TEST_P(ParametrizedWebFrameTest, DidAccessInitialDocumentViaJavascriptUrl) 5326 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentViaJavascriptUrl)
5327 { 5327 {
5328 TestAccessInitialDocumentWebFrameClient webFrameClient; 5328 TestAccessInitialDocumentWebFrameClient webFrameClient;
5329 FrameTestHelpers::WebViewHelper webViewHelper(this); 5329 FrameTestHelpers::WebViewHelper webViewHelper(this);
5330 webViewHelper.initialize(true, &webFrameClient); 5330 webViewHelper.initialize(true, &webFrameClient);
5331 runPendingTasks(); 5331 runPendingTasks();
5332 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5332 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5333 5333
5334 // Access the initial document from a javascript: URL. 5334 // Access the initial document from a javascript: URL.
5335 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Modified'))"); 5335 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.body.appendChild(document.createTextNode('Modified'))");
5336 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5336 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5337 } 5337 }
5338 5338
5339 // Fails on the WebKit XP (deps) bot. http://crbug.com/312192 5339 // Fails on the WebKit XP (deps) bot. http://crbug.com/312192
5340 #if OS(WIN) 5340 #if OS(WIN)
5341 TEST_P(ParametrizedWebFrameTest, DISABLED_DidAccessInitialDocumentBodyBeforeModa lDialog) 5341 TEST_P(ParameterizedWebFrameTest, DISABLED_DidAccessInitialDocumentBodyBeforeMod alDialog)
5342 #else 5342 #else
5343 TEST_P(ParametrizedWebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog) 5343 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog)
5344 #endif 5344 #endif
5345 { 5345 {
5346 // FIXME: Why is this local webViewClient needed instead of the default 5346 // FIXME: Why is this local webViewClient needed instead of the default
5347 // WebViewHelper one? With out it there's some mysterious crash in the 5347 // WebViewHelper one? With out it there's some mysterious crash in the
5348 // WebViewHelper destructor. 5348 // WebViewHelper destructor.
5349 FrameTestHelpers::TestWebViewClient webViewClient; 5349 FrameTestHelpers::TestWebViewClient webViewClient;
5350 TestAccessInitialDocumentWebFrameClient webFrameClient; 5350 TestAccessInitialDocumentWebFrameClient webFrameClient;
5351 FrameTestHelpers::WebViewHelper webViewHelper(this); 5351 FrameTestHelpers::WebViewHelper webViewHelper(this);
5352 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5352 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5353 runPendingTasks(); 5353 runPendingTasks();
(...skipping 17 matching lines...) Expand all
5371 WebScriptSource("window.opener.confirm('Modal');")); 5371 WebScriptSource("window.opener.confirm('Modal');"));
5372 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5372 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5373 5373
5374 // Ensure that we don't notify again later. 5374 // Ensure that we don't notify again later.
5375 runPendingTasks(); 5375 runPendingTasks();
5376 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5376 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5377 } 5377 }
5378 5378
5379 // Fails on the WebKit XP (deps) bot. http://crbug.com/312192 5379 // Fails on the WebKit XP (deps) bot. http://crbug.com/312192
5380 #if OS(WIN) 5380 #if OS(WIN)
5381 TEST_P(ParametrizedWebFrameTest, DISABLED_DidWriteToInitialDocumentBeforeModalDi alog) 5381 TEST_P(ParameterizedWebFrameTest, DISABLED_DidWriteToInitialDocumentBeforeModalD ialog)
5382 #else 5382 #else
5383 TEST_P(ParametrizedWebFrameTest, DidWriteToInitialDocumentBeforeModalDialog) 5383 TEST_P(ParameterizedWebFrameTest, DidWriteToInitialDocumentBeforeModalDialog)
5384 #endif 5384 #endif
5385 { 5385 {
5386 // FIXME: Why is this local webViewClient needed instead of the default 5386 // FIXME: Why is this local webViewClient needed instead of the default
5387 // WebViewHelper one? With out it there's some mysterious crash in the 5387 // WebViewHelper one? With out it there's some mysterious crash in the
5388 // WebViewHelper destructor. 5388 // WebViewHelper destructor.
5389 FrameTestHelpers::TestWebViewClient webViewClient; 5389 FrameTestHelpers::TestWebViewClient webViewClient;
5390 TestAccessInitialDocumentWebFrameClient webFrameClient; 5390 TestAccessInitialDocumentWebFrameClient webFrameClient;
5391 FrameTestHelpers::WebViewHelper webViewHelper(this); 5391 FrameTestHelpers::WebViewHelper webViewHelper(this);
5392 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5392 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5393 runPendingTasks(); 5393 runPendingTasks();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
5495 EXPECT_FALSE(view->wasScrolledByUser()); 5495 EXPECT_FALSE(view->wasScrolledByUser());
5496 client.reset(); 5496 client.reset();
5497 5497
5498 // Programmatic scroll to same offset. No scroll event should be generated. 5498 // Programmatic scroll to same offset. No scroll event should be generated.
5499 frameImpl->executeScript(WebScriptSource("window.scrollTo(0, 20);")); 5499 frameImpl->executeScript(WebScriptSource("window.scrollTo(0, 20);"));
5500 EXPECT_FALSE(client.wasFrameScrolled()); 5500 EXPECT_FALSE(client.wasFrameScrolled());
5501 EXPECT_FALSE(view->wasScrolledByUser()); 5501 EXPECT_FALSE(view->wasScrolledByUser());
5502 client.reset(); 5502 client.reset();
5503 } 5503 }
5504 5504
5505 TEST_P(ParametrizedWebFrameTest, FirstPartyForCookiesForRedirect) 5505 TEST_P(ParameterizedWebFrameTest, FirstPartyForCookiesForRedirect)
5506 { 5506 {
5507 WTF::String filePath = Platform::current()->unitTestSupport()->webKitRootDir (); 5507 WTF::String filePath = Platform::current()->unitTestSupport()->webKitRootDir ();
5508 filePath.append("/Source/web/tests/data/first_party.html"); 5508 filePath.append("/Source/web/tests/data/first_party.html");
5509 5509
5510 WebURL testURL(toKURL("http://internal.test/first_party_redirect.html")); 5510 WebURL testURL(toKURL("http://internal.test/first_party_redirect.html"));
5511 char redirect[] = "http://internal.test/first_party.html"; 5511 char redirect[] = "http://internal.test/first_party.html";
5512 WebURL redirectURL(toKURL(redirect)); 5512 WebURL redirectURL(toKURL(redirect));
5513 WebURLResponse redirectResponse; 5513 WebURLResponse redirectResponse;
5514 redirectResponse.initialize(); 5514 redirectResponse.initialize();
5515 redirectResponse.setMIMEType("text/html"); 5515 redirectResponse.setMIMEType("text/html");
(...skipping 13 matching lines...) Expand all
5529 5529
5530 class TestNavigationPolicyWebFrameClient : public FrameTestHelpers::TestWebFrame Client { 5530 class TestNavigationPolicyWebFrameClient : public FrameTestHelpers::TestWebFrame Client {
5531 public: 5531 public:
5532 5532
5533 virtual void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, We bHistoryCommitType) override 5533 virtual void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, We bHistoryCommitType) override
5534 { 5534 {
5535 EXPECT_TRUE(false); 5535 EXPECT_TRUE(false);
5536 } 5536 }
5537 }; 5537 };
5538 5538
5539 TEST_P(ParametrizedWebFrameTest, SimulateFragmentAnchorMiddleClick) 5539 TEST_P(ParameterizedWebFrameTest, SimulateFragmentAnchorMiddleClick)
5540 { 5540 {
5541 registerMockedHttpURLLoad("fragment_middle_click.html"); 5541 registerMockedHttpURLLoad("fragment_middle_click.html");
5542 TestNavigationPolicyWebFrameClient client; 5542 TestNavigationPolicyWebFrameClient client;
5543 FrameTestHelpers::WebViewHelper webViewHelper(this); 5543 FrameTestHelpers::WebViewHelper webViewHelper(this);
5544 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue, &client); 5544 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue, &client);
5545 5545
5546 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document(); 5546 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document();
5547 KURL destination = document->url(); 5547 KURL destination = document->url();
5548 destination.setFragmentIdentifier("test"); 5548 destination.setFragmentIdentifier("test");
5549 5549
(...skipping 26 matching lines...) Expand all
5576 m_decidePolicyCallCount++; 5576 m_decidePolicyCallCount++;
5577 return info.defaultPolicy; 5577 return info.defaultPolicy;
5578 } 5578 }
5579 5579
5580 int decidePolicyCallCount() const { return m_decidePolicyCallCount; } 5580 int decidePolicyCallCount() const { return m_decidePolicyCallCount; }
5581 5581
5582 private: 5582 private:
5583 int m_decidePolicyCallCount; 5583 int m_decidePolicyCallCount;
5584 }; 5584 };
5585 5585
5586 TEST_P(ParametrizedWebFrameTest, ModifiedClickNewWindow) 5586 TEST_P(ParameterizedWebFrameTest, ModifiedClickNewWindow)
5587 { 5587 {
5588 registerMockedHttpURLLoad("ctrl_click.html"); 5588 registerMockedHttpURLLoad("ctrl_click.html");
5589 registerMockedHttpURLLoad("hello_world.html"); 5589 registerMockedHttpURLLoad("hello_world.html");
5590 TestNewWindowWebViewClient webViewClient; 5590 TestNewWindowWebViewClient webViewClient;
5591 TestNewWindowWebFrameClient webFrameClient; 5591 TestNewWindowWebFrameClient webFrameClient;
5592 FrameTestHelpers::WebViewHelper webViewHelper(this); 5592 FrameTestHelpers::WebViewHelper webViewHelper(this);
5593 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, &webFra meClient, &webViewClient); 5593 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, &webFra meClient, &webViewClient);
5594 5594
5595 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document(); 5595 Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()->mainF rame())->document();
5596 KURL destination = toKURL(m_baseURL + "hello_world.html"); 5596 KURL destination = toKURL(m_baseURL + "hello_world.html");
5597 5597
5598 // ctrl+click event 5598 // ctrl+click event
5599 RefPtrWillBeRawPtr<Event> event = MouseEvent::create(EventTypeNames::click, false, false, 5599 RefPtrWillBeRawPtr<Event> event = MouseEvent::create(EventTypeNames::click, false, false,
5600 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, true, false, false, false, 0 , 0, nullptr, nullptr); 5600 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, true, false, false, false, 0 , 0, nullptr, nullptr);
5601 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); 5601 FrameLoadRequest frameRequest(document, ResourceRequest(destination));
5602 frameRequest.setTriggeringEvent(event); 5602 frameRequest.setTriggeringEvent(event);
5603 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); 5603 UserGestureIndicator gesture(DefinitelyProcessingUserGesture);
5604 toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->loader().loa d(frameRequest); 5604 toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->loader().loa d(frameRequest);
5605 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame()); 5605 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame());
5606 5606
5607 // decidePolicyForNavigation should be called both for the original request and the ctrl+click. 5607 // decidePolicyForNavigation should be called both for the original request and the ctrl+click.
5608 EXPECT_EQ(2, webFrameClient.decidePolicyCallCount()); 5608 EXPECT_EQ(2, webFrameClient.decidePolicyCallCount());
5609 } 5609 }
5610 5610
5611 TEST_P(ParametrizedWebFrameTest, BackToReload) 5611 TEST_P(ParameterizedWebFrameTest, BackToReload)
5612 { 5612 {
5613 registerMockedHttpURLLoad("fragment_middle_click.html"); 5613 registerMockedHttpURLLoad("fragment_middle_click.html");
5614 FrameTestHelpers::WebViewHelper webViewHelper(this); 5614 FrameTestHelpers::WebViewHelper webViewHelper(this);
5615 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue); 5615 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue);
5616 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5616 WebFrame* frame = webViewHelper.webView()->mainFrame();
5617 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader(); 5617 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader();
5618 RefPtrWillBePersistent<HistoryItem> firstItem = mainFrameLoader.currentItem( ); 5618 RefPtrWillBePersistent<HistoryItem> firstItem = mainFrameLoader.currentItem( );
5619 EXPECT_TRUE(firstItem); 5619 EXPECT_TRUE(firstItem);
5620 5620
5621 registerMockedHttpURLLoad("white-1x1.png"); 5621 registerMockedHttpURLLoad("white-1x1.png");
5622 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 5622 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
5623 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 5623 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem());
5624 5624
5625 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()), We bHistoryDifferentDocumentLoad, WebURLRequest::UseProtocolCachePolicy); 5625 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()), We bHistoryDifferentDocumentLoad, WebURLRequest::UseProtocolCachePolicy);
5626 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem()); 5626 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem());
5627 5627
5628 FrameTestHelpers::reloadFrame(frame); 5628 FrameTestHelpers::reloadFrame(frame);
5629 EXPECT_EQ(WebURLRequest::ReloadIgnoringCacheData, frame->dataSource()->reque st().cachePolicy()); 5629 EXPECT_EQ(WebURLRequest::ReloadIgnoringCacheData, frame->dataSource()->reque st().cachePolicy());
5630 } 5630 }
5631 5631
5632 TEST_P(ParametrizedWebFrameTest, BackDuringChildFrameReload) 5632 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload)
5633 { 5633 {
5634 registerMockedHttpURLLoad("page_with_blank_iframe.html"); 5634 registerMockedHttpURLLoad("page_with_blank_iframe.html");
5635 FrameTestHelpers::WebViewHelper webViewHelper(this); 5635 FrameTestHelpers::WebViewHelper webViewHelper(this);
5636 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html", t rue); 5636 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html", t rue);
5637 WebFrame* mainFrame = webViewHelper.webView()->mainFrame(); 5637 WebFrame* mainFrame = webViewHelper.webView()->mainFrame();
5638 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader(); 5638 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader();
5639 WebFrame* childFrame = mainFrame->firstChild(); 5639 WebFrame* childFrame = mainFrame->firstChild();
5640 ASSERT_TRUE(childFrame); 5640 ASSERT_TRUE(childFrame);
5641 5641
5642 // Start a history navigation, then have a different frame commit a navigati on. 5642 // Start a history navigation, then have a different frame commit a navigati on.
5643 // In this case, reload an about:blank frame, which will commit synchronousl y. 5643 // In this case, reload an about:blank frame, which will commit synchronousl y.
5644 // After the history navigation completes, both the appropriate document url and 5644 // After the history navigation completes, both the appropriate document url and
5645 // the current history item should reflect the history navigation. 5645 // the current history item should reflect the history navigation.
5646 registerMockedHttpURLLoad("white-1x1.png"); 5646 registerMockedHttpURLLoad("white-1x1.png");
5647 WebHistoryItem item; 5647 WebHistoryItem item;
5648 item.initialize(); 5648 item.initialize();
5649 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png")); 5649 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png"));
5650 item.setURLString(historyURL.string()); 5650 item.setURLString(historyURL.string());
5651 mainFrame->loadHistoryItem(item, WebHistoryDifferentDocumentLoad, WebURLRequ est::UseProtocolCachePolicy); 5651 mainFrame->loadHistoryItem(item, WebHistoryDifferentDocumentLoad, WebURLRequ est::UseProtocolCachePolicy);
5652 5652
5653 FrameTestHelpers::reloadFrame(childFrame); 5653 FrameTestHelpers::reloadFrame(childFrame);
5654 EXPECT_EQ(item.urlString(), mainFrame->document().url().string()); 5654 EXPECT_EQ(item.urlString(), mainFrame->document().url().string());
5655 EXPECT_EQ(item.urlString(), WebString(mainFrameLoader.currentItem()->urlStri ng())); 5655 EXPECT_EQ(item.urlString(), WebString(mainFrameLoader.currentItem()->urlStri ng()));
5656 } 5656 }
5657 5657
5658 TEST_P(ParametrizedWebFrameTest, ReloadPost) 5658 TEST_P(ParameterizedWebFrameTest, ReloadPost)
5659 { 5659 {
5660 registerMockedHttpURLLoad("reload_post.html"); 5660 registerMockedHttpURLLoad("reload_post.html");
5661 FrameTestHelpers::WebViewHelper webViewHelper(this); 5661 FrameTestHelpers::WebViewHelper webViewHelper(this);
5662 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true); 5662 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true);
5663 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5663 WebFrame* frame = webViewHelper.webView()->mainFrame();
5664 5664
5665 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.forms[0].submit()"); 5665 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), "javascrip t:document.forms[0].submit()");
5666 // Pump requests one more time after the javascript URL has executed to 5666 // Pump requests one more time after the javascript URL has executed to
5667 // trigger the actual POST load request. 5667 // trigger the actual POST load request.
5668 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame()); 5668 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame());
5669 EXPECT_EQ(WebString::fromUTF8("POST"), frame->dataSource()->request().httpMe thod()); 5669 EXPECT_EQ(WebString::fromUTF8("POST"), frame->dataSource()->request().httpMe thod());
5670 5670
5671 FrameTestHelpers::reloadFrame(frame); 5671 FrameTestHelpers::reloadFrame(frame);
5672 EXPECT_EQ(WebURLRequest::ReloadIgnoringCacheData, frame->dataSource()->reque st().cachePolicy()); 5672 EXPECT_EQ(WebURLRequest::ReloadIgnoringCacheData, frame->dataSource()->reque st().cachePolicy());
5673 EXPECT_EQ(WebNavigationTypeFormResubmitted, frame->dataSource()->navigationT ype()); 5673 EXPECT_EQ(WebNavigationTypeFormResubmitted, frame->dataSource()->navigationT ype());
5674 } 5674 }
5675 5675
5676 TEST_P(ParametrizedWebFrameTest, LoadHistoryItemReload) 5676 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload)
5677 { 5677 {
5678 registerMockedHttpURLLoad("fragment_middle_click.html"); 5678 registerMockedHttpURLLoad("fragment_middle_click.html");
5679 FrameTestHelpers::WebViewHelper webViewHelper(this); 5679 FrameTestHelpers::WebViewHelper webViewHelper(this);
5680 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue); 5680 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", tr ue);
5681 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5681 WebFrame* frame = webViewHelper.webView()->mainFrame();
5682 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader(); 5682 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader();
5683 RefPtrWillBePersistent<HistoryItem> firstItem = mainFrameLoader.currentItem( ); 5683 RefPtrWillBePersistent<HistoryItem> firstItem = mainFrameLoader.currentItem( );
5684 EXPECT_TRUE(firstItem); 5684 EXPECT_TRUE(firstItem);
5685 5685
5686 registerMockedHttpURLLoad("white-1x1.png"); 5686 registerMockedHttpURLLoad("white-1x1.png");
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
5745 5745
5746 private: 5746 private:
5747 TestCachePolicyWebFrameClient* m_parentClient; 5747 TestCachePolicyWebFrameClient* m_parentClient;
5748 5748
5749 WebURLRequest::CachePolicy m_policy; 5749 WebURLRequest::CachePolicy m_policy;
5750 TestCachePolicyWebFrameClient* m_childClient; 5750 TestCachePolicyWebFrameClient* m_childClient;
5751 int m_willSendRequestCallCount; 5751 int m_willSendRequestCallCount;
5752 int m_childFrameCreationCount; 5752 int m_childFrameCreationCount;
5753 }; 5753 };
5754 5754
5755 TEST_P(ParametrizedWebFrameTest, ReloadIframe) 5755 TEST_P(ParameterizedWebFrameTest, ReloadIframe)
5756 { 5756 {
5757 registerMockedHttpURLLoad("iframe_reload.html"); 5757 registerMockedHttpURLLoad("iframe_reload.html");
5758 registerMockedHttpURLLoad("visible_iframe.html"); 5758 registerMockedHttpURLLoad("visible_iframe.html");
5759 TestCachePolicyWebFrameClient mainClient(0); 5759 TestCachePolicyWebFrameClient mainClient(0);
5760 TestCachePolicyWebFrameClient childClient(&mainClient); 5760 TestCachePolicyWebFrameClient childClient(&mainClient);
5761 mainClient.setChildWebFrameClient(&childClient); 5761 mainClient.setChildWebFrameClient(&childClient);
5762 5762
5763 FrameTestHelpers::WebViewHelper webViewHelper(this); 5763 FrameTestHelpers::WebViewHelper webViewHelper(this);
5764 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, &mai nClient); 5764 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, &mai nClient);
5765 5765
(...skipping 27 matching lines...) Expand all
5793 if (toWebLocalFrameImpl(frame)->frame()->loader().loadType() == FrameLoa dTypeSame) 5793 if (toWebLocalFrameImpl(frame)->frame()->loader().loadType() == FrameLoa dTypeSame)
5794 m_frameLoadTypeSameSeen = true; 5794 m_frameLoadTypeSameSeen = true;
5795 } 5795 }
5796 5796
5797 bool frameLoadTypeSameSeen() const { return m_frameLoadTypeSameSeen; } 5797 bool frameLoadTypeSameSeen() const { return m_frameLoadTypeSameSeen; }
5798 5798
5799 private: 5799 private:
5800 bool m_frameLoadTypeSameSeen; 5800 bool m_frameLoadTypeSameSeen;
5801 }; 5801 };
5802 5802
5803 TEST_P(ParametrizedWebFrameTest, NavigateToSame) 5803 TEST_P(ParameterizedWebFrameTest, NavigateToSame)
5804 { 5804 {
5805 registerMockedHttpURLLoad("navigate_to_same.html"); 5805 registerMockedHttpURLLoad("navigate_to_same.html");
5806 TestSameDocumentWebFrameClient client; 5806 TestSameDocumentWebFrameClient client;
5807 FrameTestHelpers::WebViewHelper webViewHelper(this); 5807 FrameTestHelpers::WebViewHelper webViewHelper(this);
5808 webViewHelper.initializeAndLoad(m_baseURL + "navigate_to_same.html", true, & client); 5808 webViewHelper.initializeAndLoad(m_baseURL + "navigate_to_same.html", true, & client);
5809 EXPECT_FALSE(client.frameLoadTypeSameSeen()); 5809 EXPECT_FALSE(client.frameLoadTypeSameSeen());
5810 5810
5811 FrameLoadRequest frameRequest(0, ResourceRequest(toLocalFrame(webViewHelper. webViewImpl()->page()->mainFrame())->document()->url())); 5811 FrameLoadRequest frameRequest(0, ResourceRequest(toLocalFrame(webViewHelper. webViewImpl()->page()->mainFrame())->document()->url()));
5812 toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->loader().loa d(frameRequest); 5812 toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->loader().loa d(frameRequest);
5813 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame()); 5813 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF rame());
(...skipping 15 matching lines...) Expand all
5829 EXPECT_EQ(WebURLRequest::UseProtocolCachePolicy, request.cachePolicy ()); 5829 EXPECT_EQ(WebURLRequest::UseProtocolCachePolicy, request.cachePolicy ());
5830 } 5830 }
5831 } 5831 }
5832 5832
5833 int numOfImageRequests() const { return m_numOfImageRequests; } 5833 int numOfImageRequests() const { return m_numOfImageRequests; }
5834 5834
5835 private: 5835 private:
5836 int m_numOfImageRequests; 5836 int m_numOfImageRequests;
5837 }; 5837 };
5838 5838
5839 TEST_P(ParametrizedWebFrameTest, NavigateToSameNoConditionalRequestForSubresourc e) 5839 TEST_P(ParameterizedWebFrameTest, NavigateToSameNoConditionalRequestForSubresour ce)
5840 { 5840 {
5841 registerMockedHttpURLLoad("foo_with_image.html"); 5841 registerMockedHttpURLLoad("foo_with_image.html");
5842 registerMockedHttpURLLoad("white-1x1.png"); 5842 registerMockedHttpURLLoad("white-1x1.png");
5843 TestSameDocumentWithImageWebFrameClient client; 5843 TestSameDocumentWithImageWebFrameClient client;
5844 FrameTestHelpers::WebViewHelper webViewHelper(this); 5844 FrameTestHelpers::WebViewHelper webViewHelper(this);
5845 webViewHelper.initializeAndLoad(m_baseURL + "foo_with_image.html", true, &cl ient, 0, &configureLoadsImagesAutomatically); 5845 webViewHelper.initializeAndLoad(m_baseURL + "foo_with_image.html", true, &cl ient, 0, &configureLoadsImagesAutomatically);
5846 5846
5847 WebCache::clear(); 5847 WebCache::clear();
5848 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "foo_with_image.html"); 5848 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "foo_with_image.html");
5849 5849
5850 EXPECT_EQ(client.numOfImageRequests(), 2); 5850 EXPECT_EQ(client.numOfImageRequests(), 2);
5851 } 5851 }
5852 5852
5853 TEST_P(ParametrizedWebFrameTest, WebNodeImageContents) 5853 TEST_P(ParameterizedWebFrameTest, WebNodeImageContents)
5854 { 5854 {
5855 FrameTestHelpers::WebViewHelper webViewHelper(this); 5855 FrameTestHelpers::WebViewHelper webViewHelper(this);
5856 webViewHelper.initializeAndLoad("about:blank", true); 5856 webViewHelper.initializeAndLoad("about:blank", true);
5857 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5857 WebFrame* frame = webViewHelper.webView()->mainFrame();
5858 5858
5859 static const char bluePNG[] = "<img src=\"data:image/png;base64,iVBORw0KGgoA AAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkYPj/n4EIwDiqEF8oUT94AFIQE/cCn90I AAAAAElFTkSuQmCC\">"; 5859 static const char bluePNG[] = "<img src=\"data:image/png;base64,iVBORw0KGgoA AAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkYPj/n4EIwDiqEF8oUT94AFIQE/cCn90I AAAAAElFTkSuQmCC\">";
5860 5860
5861 // Load up the image and test that we can extract the contents. 5861 // Load up the image and test that we can extract the contents.
5862 KURL testURL = toKURL("about:blank"); 5862 KURL testURL = toKURL("about:blank");
5863 FrameTestHelpers::loadHTMLString(frame, bluePNG, testURL); 5863 FrameTestHelpers::loadHTMLString(frame, bluePNG, testURL);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
5902 int startLoadingCount() const { return m_startLoadingCount; } 5902 int startLoadingCount() const { return m_startLoadingCount; }
5903 int stopLoadingCount() const { return m_stopLoadingCount; } 5903 int stopLoadingCount() const { return m_stopLoadingCount; }
5904 int differentDocumentStartCount() const { return m_differentDocumentStartCou nt; } 5904 int differentDocumentStartCount() const { return m_differentDocumentStartCou nt; }
5905 5905
5906 private: 5906 private:
5907 int m_startLoadingCount; 5907 int m_startLoadingCount;
5908 int m_stopLoadingCount; 5908 int m_stopLoadingCount;
5909 int m_differentDocumentStartCount; 5909 int m_differentDocumentStartCount;
5910 }; 5910 };
5911 5911
5912 TEST_P(ParametrizedWebFrameTest, PushStateStartsAndStops) 5912 TEST_P(ParameterizedWebFrameTest, PushStateStartsAndStops)
5913 { 5913 {
5914 registerMockedHttpURLLoad("push_state.html"); 5914 registerMockedHttpURLLoad("push_state.html");
5915 TestStartStopCallbackWebFrameClient client; 5915 TestStartStopCallbackWebFrameClient client;
5916 FrameTestHelpers::WebViewHelper webViewHelper(this); 5916 FrameTestHelpers::WebViewHelper webViewHelper(this);
5917 webViewHelper.initializeAndLoad(m_baseURL + "push_state.html", true, &client ); 5917 webViewHelper.initializeAndLoad(m_baseURL + "push_state.html", true, &client );
5918 5918
5919 EXPECT_EQ(client.startLoadingCount(), 2); 5919 EXPECT_EQ(client.startLoadingCount(), 2);
5920 EXPECT_EQ(client.stopLoadingCount(), 2); 5920 EXPECT_EQ(client.stopLoadingCount(), 2);
5921 EXPECT_EQ(client.differentDocumentStartCount(), 1); 5921 EXPECT_EQ(client.differentDocumentStartCount(), 1);
5922 } 5922 }
5923 5923
5924 class TestDidNavigateCommitTypeWebFrameClient : public FrameTestHelpers::TestWeb FrameClient { 5924 class TestDidNavigateCommitTypeWebFrameClient : public FrameTestHelpers::TestWeb FrameClient {
5925 public: 5925 public:
5926 TestDidNavigateCommitTypeWebFrameClient() 5926 TestDidNavigateCommitTypeWebFrameClient()
5927 : m_lastCommitType(WebHistoryInertCommit) 5927 : m_lastCommitType(WebHistoryInertCommit)
5928 { 5928 {
5929 } 5929 }
5930 5930
5931 virtual void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, We bHistoryCommitType type) override 5931 virtual void didNavigateWithinPage(WebLocalFrame*, const WebHistoryItem&, We bHistoryCommitType type) override
5932 { 5932 {
5933 m_lastCommitType = type; 5933 m_lastCommitType = type;
5934 } 5934 }
5935 5935
5936 WebHistoryCommitType lastCommitType() const { return m_lastCommitType; } 5936 WebHistoryCommitType lastCommitType() const { return m_lastCommitType; }
5937 5937
5938 private: 5938 private:
5939 WebHistoryCommitType m_lastCommitType; 5939 WebHistoryCommitType m_lastCommitType;
5940 }; 5940 };
5941 5941
5942 TEST_P(ParametrizedWebFrameTest, SameDocumentHistoryNavigationCommitType) 5942 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType)
5943 { 5943 {
5944 registerMockedHttpURLLoad("push_state.html"); 5944 registerMockedHttpURLLoad("push_state.html");
5945 TestDidNavigateCommitTypeWebFrameClient client; 5945 TestDidNavigateCommitTypeWebFrameClient client;
5946 FrameTestHelpers::WebViewHelper webViewHelper(this); 5946 FrameTestHelpers::WebViewHelper webViewHelper(this);
5947 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "push _state.html", true, &client); 5947 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "push _state.html", true, &client);
5948 RefPtrWillBePersistent<HistoryItem> item = toLocalFrame(webViewImpl->page()- >mainFrame())->loader().currentItem(); 5948 RefPtrWillBePersistent<HistoryItem> item = toLocalFrame(webViewImpl->page()- >mainFrame())->loader().currentItem();
5949 runPendingTasks(); 5949 runPendingTasks();
5950 5950
5951 toLocalFrame(webViewImpl->page()->mainFrame())->loader().loadHistoryItem(ite m.get(), FrameLoadTypeBackForward, HistorySameDocumentLoad); 5951 toLocalFrame(webViewImpl->page()->mainFrame())->loader().loadHistoryItem(ite m.get(), FrameLoadTypeBackForward, HistorySameDocumentLoad);
5952 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType()); 5952 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType());
(...skipping 17 matching lines...) Expand all
5970 bool replacesCurrentHistoryItem() { return m_replacesCurrentHistoryItem; } 5970 bool replacesCurrentHistoryItem() { return m_replacesCurrentHistoryItem; }
5971 WebFrame* frame() { return m_frame; } 5971 WebFrame* frame() { return m_frame; }
5972 5972
5973 private: 5973 private:
5974 bool m_replacesCurrentHistoryItem; 5974 bool m_replacesCurrentHistoryItem;
5975 WebFrame* m_frame; 5975 WebFrame* m_frame;
5976 }; 5976 };
5977 5977
5978 // Test which ensures that the first navigation in a subframe will always 5978 // Test which ensures that the first navigation in a subframe will always
5979 // result in history entry being replaced and not a new one added. 5979 // result in history entry being replaced and not a new one added.
5980 TEST_P(ParametrizedWebFrameTest, DISABLED_FirstFrameNavigationReplacesHistory) 5980 TEST_P(ParameterizedWebFrameTest, DISABLED_FirstFrameNavigationReplacesHistory)
5981 { 5981 {
5982 registerMockedHttpURLLoad("history.html"); 5982 registerMockedHttpURLLoad("history.html");
5983 registerMockedHttpURLLoad("find.html"); 5983 registerMockedHttpURLLoad("find.html");
5984 5984
5985 FrameTestHelpers::WebViewHelper webViewHelper(this); 5985 FrameTestHelpers::WebViewHelper webViewHelper(this);
5986 TestHistoryWebFrameClient client; 5986 TestHistoryWebFrameClient client;
5987 webViewHelper.initializeAndLoad("about:blank", true, &client); 5987 webViewHelper.initializeAndLoad("about:blank", true, &client);
5988 EXPECT_TRUE(client.replacesCurrentHistoryItem()); 5988 EXPECT_TRUE(client.replacesCurrentHistoryItem());
5989 5989
5990 WebFrame* frame = webViewHelper.webView()->mainFrame(); 5990 WebFrame* frame = webViewHelper.webView()->mainFrame();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
6044 6044
6045 // Call javascript to make the layer scrollable, and verify it. 6045 // Call javascript to make the layer scrollable, and verify it.
6046 WebLocalFrameImpl* frame = (WebLocalFrameImpl*)webViewHelper.webView()->main Frame(); 6046 WebLocalFrameImpl* frame = (WebLocalFrameImpl*)webViewHelper.webView()->main Frame();
6047 frame->executeScript(WebScriptSource("allowScroll();")); 6047 frame->executeScript(WebScriptSource("allowScroll();"));
6048 webViewHelper.webView()->layout(); 6048 webViewHelper.webView()->layout();
6049 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal()); 6049 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal());
6050 ASSERT_TRUE(webScrollLayer->userScrollableVertical()); 6050 ASSERT_TRUE(webScrollLayer->userScrollableVertical());
6051 } 6051 }
6052 6052
6053 // Test that currentHistoryItem reflects the current page, not the provisional l oad. 6053 // Test that currentHistoryItem reflects the current page, not the provisional l oad.
6054 TEST_P(ParametrizedWebFrameTest, CurrentHistoryItem) 6054 TEST_P(ParameterizedWebFrameTest, CurrentHistoryItem)
6055 { 6055 {
6056 registerMockedHttpURLLoad("fixed_layout.html"); 6056 registerMockedHttpURLLoad("fixed_layout.html");
6057 std::string url = m_baseURL + "fixed_layout.html"; 6057 std::string url = m_baseURL + "fixed_layout.html";
6058 6058
6059 FrameTestHelpers::WebViewHelper webViewHelper(this); 6059 FrameTestHelpers::WebViewHelper webViewHelper(this);
6060 webViewHelper.initialize(); 6060 webViewHelper.initialize();
6061 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6061 WebFrame* frame = webViewHelper.webView()->mainFrame();
6062 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader(); 6062 const FrameLoader& mainFrameLoader = webViewHelper.webViewImpl()->mainFrameI mpl()->frame()->loader();
6063 WebURLRequest request; 6063 WebURLRequest request;
6064 request.initialize(); 6064 request.initialize();
(...skipping 21 matching lines...) Expand all
6086 return 0; 6086 return 0;
6087 } 6087 }
6088 6088
6089 int callCount() const { return m_callCount; } 6089 int callCount() const { return m_callCount; }
6090 6090
6091 private: 6091 private:
6092 int m_callCount; 6092 int m_callCount;
6093 }; 6093 };
6094 6094
6095 // Test that we don't crash if WebFrameClient::createChildFrame() fails. 6095 // Test that we don't crash if WebFrameClient::createChildFrame() fails.
6096 TEST_P(ParametrizedWebFrameTest, CreateChildFrameFailure) 6096 TEST_P(ParameterizedWebFrameTest, CreateChildFrameFailure)
6097 { 6097 {
6098 registerMockedHttpURLLoad("create_child_frame_fail.html"); 6098 registerMockedHttpURLLoad("create_child_frame_fail.html");
6099 FailCreateChildFrame client; 6099 FailCreateChildFrame client;
6100 FrameTestHelpers::WebViewHelper webViewHelper(this); 6100 FrameTestHelpers::WebViewHelper webViewHelper(this);
6101 webViewHelper.initializeAndLoad(m_baseURL + "create_child_frame_fail.html", true, &client); 6101 webViewHelper.initializeAndLoad(m_baseURL + "create_child_frame_fail.html", true, &client);
6102 6102
6103 EXPECT_EQ(1, client.callCount()); 6103 EXPECT_EQ(1, client.callCount());
6104 } 6104 }
6105 6105
6106 TEST_P(ParametrizedWebFrameTest, fixedPositionInFixedViewport) 6106 TEST_P(ParameterizedWebFrameTest, fixedPositionInFixedViewport)
6107 { 6107 {
6108 UseMockScrollbarSettings mockScrollbarSettings; 6108 UseMockScrollbarSettings mockScrollbarSettings;
6109 registerMockedHttpURLLoad("fixed-position-in-fixed-viewport.html"); 6109 registerMockedHttpURLLoad("fixed-position-in-fixed-viewport.html");
6110 FrameTestHelpers::WebViewHelper webViewHelper(this); 6110 FrameTestHelpers::WebViewHelper webViewHelper(this);
6111 webViewHelper.initializeAndLoad(m_baseURL + "fixed-position-in-fixed-viewpor t.html", true, 0, 0, enableViewportSettings); 6111 webViewHelper.initializeAndLoad(m_baseURL + "fixed-position-in-fixed-viewpor t.html", true, 0, 0, enableViewportSettings);
6112 6112
6113 WebView* webView = webViewHelper.webView(); 6113 WebView* webView = webViewHelper.webView();
6114 webView->resize(WebSize(100, 100)); 6114 webView->resize(WebSize(100, 100));
6115 6115
6116 Document* document = toWebLocalFrameImpl(webView->mainFrame())->frame()->doc ument(); 6116 Document* document = toWebLocalFrameImpl(webView->mainFrame())->frame()->doc ument();
6117 Element* bottomFixed = document->getElementById("bottom-fixed"); 6117 Element* bottomFixed = document->getElementById("bottom-fixed");
6118 Element* topBottomFixed = document->getElementById("top-bottom-fixed"); 6118 Element* topBottomFixed = document->getElementById("top-bottom-fixed");
6119 Element* rightFixed = document->getElementById("right-fixed"); 6119 Element* rightFixed = document->getElementById("right-fixed");
6120 Element* leftRightFixed = document->getElementById("left-right-fixed"); 6120 Element* leftRightFixed = document->getElementById("left-right-fixed");
6121 6121
6122 // The layout viewport will hit the min-scale limit of 0.25, so it'll be 400 x800. 6122 // The layout viewport will hit the min-scale limit of 0.25, so it'll be 400 x800.
6123 webView->resize(WebSize(100, 200)); 6123 webView->resize(WebSize(100, 200));
6124 EXPECT_EQ(800, bottomFixed->offsetTop() + bottomFixed->offsetHeight()); 6124 EXPECT_EQ(800, bottomFixed->offsetTop() + bottomFixed->offsetHeight());
6125 EXPECT_EQ(800, topBottomFixed->offsetHeight()); 6125 EXPECT_EQ(800, topBottomFixed->offsetHeight());
6126 6126
6127 // Now the layout viewport hits the content width limit of 500px so it'll be 500x500. 6127 // Now the layout viewport hits the content width limit of 500px so it'll be 500x500.
6128 webView->resize(WebSize(200, 200)); 6128 webView->resize(WebSize(200, 200));
6129 EXPECT_EQ(500, rightFixed->offsetLeft() + rightFixed->offsetWidth()); 6129 EXPECT_EQ(500, rightFixed->offsetLeft() + rightFixed->offsetWidth());
6130 EXPECT_EQ(500, leftRightFixed->offsetWidth()); 6130 EXPECT_EQ(500, leftRightFixed->offsetWidth());
6131 } 6131 }
6132 6132
6133 TEST_P(ParametrizedWebFrameTest, FrameViewMoveWithSetFrameRect) 6133 TEST_P(ParameterizedWebFrameTest, FrameViewMoveWithSetFrameRect)
6134 { 6134 {
6135 FrameTestHelpers::WebViewHelper webViewHelper(this); 6135 FrameTestHelpers::WebViewHelper webViewHelper(this);
6136 webViewHelper.initializeAndLoad("about:blank"); 6136 webViewHelper.initializeAndLoad("about:blank");
6137 webViewHelper.webViewImpl()->resize(WebSize(200, 200)); 6137 webViewHelper.webViewImpl()->resize(WebSize(200, 200));
6138 webViewHelper.webViewImpl()->layout(); 6138 webViewHelper.webViewImpl()->layout();
6139 6139
6140 FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameVi ew(); 6140 FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameVi ew();
6141 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect()); 6141 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect());
6142 frameView->setFrameRect(IntRect(100, 100, 200, 200)); 6142 frameView->setFrameRect(IntRect(100, 100, 200, 200));
6143 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect()); 6143 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
6201 // should allow an extra 0.5px of scrolling in the pinch viewport. Make 6201 // should allow an extra 0.5px of scrolling in the pinch viewport. Make
6202 // sure we're not losing any pixels when applying the adjustment on the 6202 // sure we're not losing any pixels when applying the adjustment on the
6203 // main frame. 6203 // main frame.
6204 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), 1.0f, 1.0f / topControlsHeight); 6204 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), 1.0f, 1.0f / topControlsHeight);
6205 EXPECT_POINT_EQ(IntPoint(0, 1901), frameView->maximumScrollPosition()); 6205 EXPECT_POINT_EQ(IntPoint(0, 1901), frameView->maximumScrollPosition());
6206 6206
6207 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), 1.0f, 2.0f / topControlsHeight); 6207 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), 1.0f, 2.0f / topControlsHeight);
6208 EXPECT_POINT_EQ(IntPoint(0, 1903), frameView->maximumScrollPosition()); 6208 EXPECT_POINT_EQ(IntPoint(0, 1903), frameView->maximumScrollPosition());
6209 } 6209 }
6210 6210
6211 TEST_P(ParametrizedWebFrameTest, FullscreenLayerSize) 6211 TEST_P(ParameterizedWebFrameTest, FullscreenLayerSize)
6212 { 6212 {
6213 FakeCompositingWebViewClient client; 6213 FakeCompositingWebViewClient client;
6214 registerMockedHttpURLLoad("fullscreen_div.html"); 6214 registerMockedHttpURLLoad("fullscreen_div.html");
6215 FrameTestHelpers::WebViewHelper webViewHelper(this); 6215 FrameTestHelpers::WebViewHelper webViewHelper(this);
6216 int viewportWidth = 640; 6216 int viewportWidth = 640;
6217 int viewportHeight = 480; 6217 int viewportHeight = 480;
6218 client.m_screenInfo.rect.width = viewportWidth; 6218 client.m_screenInfo.rect.width = viewportWidth;
6219 client.m_screenInfo.rect.height = viewportHeight; 6219 client.m_screenInfo.rect.height = viewportHeight;
6220 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, 0, &client, configureAndroid); 6220 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, 0, &client, configureAndroid);
6221 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); 6221 webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
6269 6269
6270 // Verify that the main frame is scrollable upon exiting fullscreen. 6270 // Verify that the main frame is scrollable upon exiting fullscreen.
6271 webViewImpl->didExitFullScreen(); 6271 webViewImpl->didExitFullScreen();
6272 webViewImpl->layout(); 6272 webViewImpl->layout();
6273 ASSERT_FALSE(Fullscreen::isFullScreen(*document)); 6273 ASSERT_FALSE(Fullscreen::isFullScreen(*document));
6274 webScrollLayer = webViewImpl->compositor()->scrollLayer()->platformLayer(); 6274 webScrollLayer = webViewImpl->compositor()->scrollLayer()->platformLayer();
6275 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal()); 6275 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal());
6276 ASSERT_TRUE(webScrollLayer->userScrollableVertical()); 6276 ASSERT_TRUE(webScrollLayer->userScrollableVertical());
6277 } 6277 }
6278 6278
6279 TEST_P(ParametrizedWebFrameTest, FullscreenMainFrame) 6279 TEST_P(ParameterizedWebFrameTest, FullscreenMainFrame)
6280 { 6280 {
6281 FakeCompositingWebViewClient client; 6281 FakeCompositingWebViewClient client;
6282 registerMockedHttpURLLoad("fullscreen_div.html"); 6282 registerMockedHttpURLLoad("fullscreen_div.html");
6283 FrameTestHelpers::WebViewHelper webViewHelper(this); 6283 FrameTestHelpers::WebViewHelper webViewHelper(this);
6284 int viewportWidth = 640; 6284 int viewportWidth = 640;
6285 int viewportHeight = 480; 6285 int viewportHeight = 480;
6286 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, 0, &client, configureAndroid); 6286 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, 0, &client, configureAndroid);
6287 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); 6287 webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
6288 webViewImpl->layout(); 6288 webViewImpl->layout();
6289 6289
(...skipping 10 matching lines...) Expand all
6300 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal()); 6300 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal());
6301 ASSERT_TRUE(webScrollLayer->userScrollableVertical()); 6301 ASSERT_TRUE(webScrollLayer->userScrollableVertical());
6302 6302
6303 // Verify the main frame still behaves correctly after a resize. 6303 // Verify the main frame still behaves correctly after a resize.
6304 webViewImpl->resize(WebSize(viewportHeight, viewportWidth)); 6304 webViewImpl->resize(WebSize(viewportHeight, viewportWidth));
6305 ASSERT_TRUE(webScrollLayer->scrollable()); 6305 ASSERT_TRUE(webScrollLayer->scrollable());
6306 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal()); 6306 ASSERT_TRUE(webScrollLayer->userScrollableHorizontal());
6307 ASSERT_TRUE(webScrollLayer->userScrollableVertical()); 6307 ASSERT_TRUE(webScrollLayer->userScrollableVertical());
6308 } 6308 }
6309 6309
6310 TEST_P(ParametrizedWebFrameTest, FullscreenSubframe) 6310 TEST_P(ParameterizedWebFrameTest, FullscreenSubframe)
6311 { 6311 {
6312 FakeCompositingWebViewClient client; 6312 FakeCompositingWebViewClient client;
6313 registerMockedHttpURLLoad("fullscreen_iframe.html"); 6313 registerMockedHttpURLLoad("fullscreen_iframe.html");
6314 registerMockedHttpURLLoad("fullscreen_div.html"); 6314 registerMockedHttpURLLoad("fullscreen_div.html");
6315 FrameTestHelpers::WebViewHelper webViewHelper(this); 6315 FrameTestHelpers::WebViewHelper webViewHelper(this);
6316 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_iframe.html", true, 0, &client, configureAndroid); 6316 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_iframe.html", true, 0, &client, configureAndroid);
6317 int viewportWidth = 640; 6317 int viewportWidth = 640;
6318 int viewportHeight = 480; 6318 int viewportHeight = 480;
6319 client.m_screenInfo.rect.width = viewportWidth; 6319 client.m_screenInfo.rect.width = viewportWidth;
6320 client.m_screenInfo.rect.height = viewportHeight; 6320 client.m_screenInfo.rect.height = viewportHeight;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
6366 webViewImpl->didEnterFullScreen(); 6366 webViewImpl->didEnterFullScreen();
6367 webViewImpl->layout(); 6367 webViewImpl->layout();
6368 6368
6369 // Verify that the video layer is visible in fullscreen. 6369 // Verify that the video layer is visible in fullscreen.
6370 DeprecatedPaintLayer* paintLayer = videoFullscreen->layoutObject()->enclosi ngLayer(); 6370 DeprecatedPaintLayer* paintLayer = videoFullscreen->layoutObject()->enclosi ngLayer();
6371 GraphicsLayer* graphicsLayer = paintLayer->graphicsLayerBacking(); 6371 GraphicsLayer* graphicsLayer = paintLayer->graphicsLayerBacking();
6372 EXPECT_TRUE(graphicsLayer->contentsAreVisible()); 6372 EXPECT_TRUE(graphicsLayer->contentsAreVisible());
6373 context->notifyContextDestroyed(); 6373 context->notifyContextDestroyed();
6374 } 6374 }
6375 6375
6376 TEST_P(ParametrizedWebFrameTest, FullscreenWithTinyViewport) 6376 TEST_P(ParameterizedWebFrameTest, FullscreenWithTinyViewport)
6377 { 6377 {
6378 FakeCompositingWebViewClient client; 6378 FakeCompositingWebViewClient client;
6379 registerMockedHttpURLLoad("viewport-tiny.html"); 6379 registerMockedHttpURLLoad("viewport-tiny.html");
6380 FrameTestHelpers::WebViewHelper webViewHelper(this); 6380 FrameTestHelpers::WebViewHelper webViewHelper(this);
6381 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, 0, &client, configureAndroid); 6381 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, 0, &client, configureAndroid);
6382 int viewportWidth = 384; 6382 int viewportWidth = 384;
6383 int viewportHeight = 640; 6383 int viewportHeight = 640;
6384 client.m_screenInfo.rect.width = viewportWidth; 6384 client.m_screenInfo.rect.width = viewportWidth;
6385 client.m_screenInfo.rect.height = viewportHeight; 6385 client.m_screenInfo.rect.height = viewportHeight;
6386 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); 6386 webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
(...skipping 19 matching lines...) Expand all
6406 6406
6407 webViewImpl->didExitFullScreen(); 6407 webViewImpl->didExitFullScreen();
6408 webViewImpl->layout(); 6408 webViewImpl->layout();
6409 EXPECT_EQ(320, layoutView->logicalWidth().floor()); 6409 EXPECT_EQ(320, layoutView->logicalWidth().floor());
6410 EXPECT_EQ(533, layoutView->logicalHeight().floor()); 6410 EXPECT_EQ(533, layoutView->logicalHeight().floor());
6411 EXPECT_FLOAT_EQ(1.2, webViewImpl->pageScaleFactor()); 6411 EXPECT_FLOAT_EQ(1.2, webViewImpl->pageScaleFactor());
6412 EXPECT_FLOAT_EQ(1.2, webViewImpl->minimumPageScaleFactor()); 6412 EXPECT_FLOAT_EQ(1.2, webViewImpl->minimumPageScaleFactor());
6413 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor()); 6413 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor());
6414 } 6414 }
6415 6415
6416 TEST_P(ParametrizedWebFrameTest, FullscreenResizeWithTinyViewport) 6416 TEST_P(ParameterizedWebFrameTest, FullscreenResizeWithTinyViewport)
6417 { 6417 {
6418 FakeCompositingWebViewClient client; 6418 FakeCompositingWebViewClient client;
6419 registerMockedHttpURLLoad("viewport-tiny.html"); 6419 registerMockedHttpURLLoad("viewport-tiny.html");
6420 FrameTestHelpers::WebViewHelper webViewHelper(this); 6420 FrameTestHelpers::WebViewHelper webViewHelper(this);
6421 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, 0, &client, configureAndroid); 6421 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "view port-tiny.html", true, 0, &client, configureAndroid);
6422 int viewportWidth = 384; 6422 int viewportWidth = 384;
6423 int viewportHeight = 640; 6423 int viewportHeight = 640;
6424 client.m_screenInfo.rect.width = viewportWidth; 6424 client.m_screenInfo.rect.width = viewportWidth;
6425 client.m_screenInfo.rect.height = viewportHeight; 6425 client.m_screenInfo.rect.height = viewportHeight;
6426 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); 6426 webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
(...skipping 25 matching lines...) Expand all
6452 6452
6453 webViewImpl->didExitFullScreen(); 6453 webViewImpl->didExitFullScreen();
6454 webViewImpl->layout(); 6454 webViewImpl->layout();
6455 EXPECT_EQ(320, layoutView->logicalWidth().floor()); 6455 EXPECT_EQ(320, layoutView->logicalWidth().floor());
6456 EXPECT_EQ(192, layoutView->logicalHeight().floor()); 6456 EXPECT_EQ(192, layoutView->logicalHeight().floor());
6457 EXPECT_FLOAT_EQ(2, webViewImpl->pageScaleFactor()); 6457 EXPECT_FLOAT_EQ(2, webViewImpl->pageScaleFactor());
6458 EXPECT_FLOAT_EQ(2, webViewImpl->minimumPageScaleFactor()); 6458 EXPECT_FLOAT_EQ(2, webViewImpl->minimumPageScaleFactor());
6459 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor()); 6459 EXPECT_FLOAT_EQ(5.0, webViewImpl->maximumPageScaleFactor());
6460 } 6460 }
6461 6461
6462 TEST_P(ParametrizedWebFrameTest, LayoutBlockPercentHeightDescendants) 6462 TEST_P(ParameterizedWebFrameTest, LayoutBlockPercentHeightDescendants)
6463 { 6463 {
6464 registerMockedHttpURLLoad("percent-height-descendants.html"); 6464 registerMockedHttpURLLoad("percent-height-descendants.html");
6465 FrameTestHelpers::WebViewHelper webViewHelper(this); 6465 FrameTestHelpers::WebViewHelper webViewHelper(this);
6466 webViewHelper.initializeAndLoad(m_baseURL + "percent-height-descendants.html "); 6466 webViewHelper.initializeAndLoad(m_baseURL + "percent-height-descendants.html ");
6467 6467
6468 WebView* webView = webViewHelper.webView(); 6468 WebView* webView = webViewHelper.webView();
6469 webView->resize(WebSize(800, 800)); 6469 webView->resize(WebSize(800, 800));
6470 webView->layout(); 6470 webView->layout();
6471 6471
6472 Document* document = toWebLocalFrameImpl(webView->mainFrame())->frame()->doc ument(); 6472 Document* document = toWebLocalFrameImpl(webView->mainFrame())->frame()->doc ument();
6473 LayoutBlock* container = toLayoutBlock(document->getElementById("container") ->layoutObject()); 6473 LayoutBlock* container = toLayoutBlock(document->getElementById("container") ->layoutObject());
6474 LayoutBox* percentHeightInAnonymous = toLayoutBox(document->getElementById(" percent-height-in-anonymous")->layoutObject()); 6474 LayoutBox* percentHeightInAnonymous = toLayoutBox(document->getElementById(" percent-height-in-anonymous")->layoutObject());
6475 LayoutBox* percentHeightDirectChild = toLayoutBox(document->getElementById(" percent-height-direct-child")->layoutObject()); 6475 LayoutBox* percentHeightDirectChild = toLayoutBox(document->getElementById(" percent-height-direct-child")->layoutObject());
6476 6476
6477 EXPECT_TRUE(LayoutBlock::hasPercentHeightDescendant(percentHeightInAnonymous )); 6477 EXPECT_TRUE(LayoutBlock::hasPercentHeightDescendant(percentHeightInAnonymous ));
6478 EXPECT_TRUE(LayoutBlock::hasPercentHeightDescendant(percentHeightDirectChild )); 6478 EXPECT_TRUE(LayoutBlock::hasPercentHeightDescendant(percentHeightDirectChild ));
6479 6479
6480 ASSERT_TRUE(container->percentHeightDescendants()); 6480 ASSERT_TRUE(container->percentHeightDescendants());
6481 ASSERT_TRUE(container->hasPercentHeightDescendants()); 6481 ASSERT_TRUE(container->hasPercentHeightDescendants());
6482 EXPECT_EQ(2U, container->percentHeightDescendants()->size()); 6482 EXPECT_EQ(2U, container->percentHeightDescendants()->size());
6483 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightInA nonymous)); 6483 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightInA nonymous));
6484 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightDir ectChild)); 6484 EXPECT_TRUE(container->percentHeightDescendants()->contains(percentHeightDir ectChild));
6485 6485
6486 LayoutBlock* anonymousBlock = percentHeightInAnonymous->containingBlock(); 6486 LayoutBlock* anonymousBlock = percentHeightInAnonymous->containingBlock();
6487 EXPECT_TRUE(anonymousBlock->isAnonymous()); 6487 EXPECT_TRUE(anonymousBlock->isAnonymous());
6488 EXPECT_FALSE(anonymousBlock->hasPercentHeightDescendants()); 6488 EXPECT_FALSE(anonymousBlock->hasPercentHeightDescendants());
6489 } 6489 }
6490 6490
6491 TEST_P(ParametrizedWebFrameTest, HasVisibleContentOnVisibleFrames) 6491 TEST_P(ParameterizedWebFrameTest, HasVisibleContentOnVisibleFrames)
6492 { 6492 {
6493 registerMockedHttpURLLoad("visible_frames.html"); 6493 registerMockedHttpURLLoad("visible_frames.html");
6494 FrameTestHelpers::WebViewHelper webViewHelper(this); 6494 FrameTestHelpers::WebViewHelper webViewHelper(this);
6495 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "visi ble_frames.html"); 6495 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "visi ble_frames.html");
6496 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) { 6496 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) {
6497 EXPECT_TRUE(frame->hasVisibleContent()); 6497 EXPECT_TRUE(frame->hasVisibleContent());
6498 } 6498 }
6499 } 6499 }
6500 6500
6501 TEST_P(ParametrizedWebFrameTest, HasVisibleContentOnHiddenFrames) 6501 TEST_P(ParameterizedWebFrameTest, HasVisibleContentOnHiddenFrames)
6502 { 6502 {
6503 registerMockedHttpURLLoad("hidden_frames.html"); 6503 registerMockedHttpURLLoad("hidden_frames.html");
6504 FrameTestHelpers::WebViewHelper webViewHelper(this); 6504 FrameTestHelpers::WebViewHelper webViewHelper(this);
6505 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "hidd en_frames.html"); 6505 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "hidd en_frames.html");
6506 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) { 6506 for (WebFrame* frame = webViewImpl->mainFrameImpl()->traverseNext(false); fr ame; frame = frame->traverseNext(false)) {
6507 EXPECT_FALSE(frame->hasVisibleContent()); 6507 EXPECT_FALSE(frame->hasVisibleContent());
6508 } 6508 }
6509 } 6509 }
6510 6510
6511 class ManifestChangeWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 6511 class ManifestChangeWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
6512 public: 6512 public:
6513 ManifestChangeWebFrameClient() : m_manifestChangeCount(0) { } 6513 ManifestChangeWebFrameClient() : m_manifestChangeCount(0) { }
6514 virtual void didChangeManifest(WebLocalFrame*) override 6514 virtual void didChangeManifest(WebLocalFrame*) override
6515 { 6515 {
6516 ++m_manifestChangeCount; 6516 ++m_manifestChangeCount;
6517 } 6517 }
6518 6518
6519 int manifestChangeCount() { return m_manifestChangeCount; } 6519 int manifestChangeCount() { return m_manifestChangeCount; }
6520 6520
6521 private: 6521 private:
6522 int m_manifestChangeCount; 6522 int m_manifestChangeCount;
6523 }; 6523 };
6524 6524
6525 TEST_P(ParametrizedWebFrameTest, NotifyManifestChange) 6525 TEST_P(ParameterizedWebFrameTest, NotifyManifestChange)
6526 { 6526 {
6527 registerMockedHttpURLLoad("link-manifest-change.html"); 6527 registerMockedHttpURLLoad("link-manifest-change.html");
6528 6528
6529 ManifestChangeWebFrameClient webFrameClient; 6529 ManifestChangeWebFrameClient webFrameClient;
6530 FrameTestHelpers::WebViewHelper webViewHelper(this); 6530 FrameTestHelpers::WebViewHelper webViewHelper(this);
6531 webViewHelper.initializeAndLoad(m_baseURL + "link-manifest-change.html", tru e, &webFrameClient); 6531 webViewHelper.initializeAndLoad(m_baseURL + "link-manifest-change.html", tru e, &webFrameClient);
6532 6532
6533 EXPECT_EQ(14, webFrameClient.manifestChangeCount()); 6533 EXPECT_EQ(14, webFrameClient.manifestChangeCount());
6534 } 6534 }
6535 6535
6536 static ResourcePtr<Resource> fetchManifest(Document* document, const KURL& url) 6536 static ResourcePtr<Resource> fetchManifest(Document* document, const KURL& url)
6537 { 6537 {
6538 FetchRequest fetchRequest = FetchRequest(ResourceRequest(url), FetchInitiato rInfo()); 6538 FetchRequest fetchRequest = FetchRequest(ResourceRequest(url), FetchInitiato rInfo());
6539 fetchRequest.mutableResourceRequest().setRequestContext(WebURLRequest::Reque stContextManifest); 6539 fetchRequest.mutableResourceRequest().setRequestContext(WebURLRequest::Reque stContextManifest);
6540 6540
6541 return document->fetcher()->fetchSynchronously(fetchRequest); 6541 return document->fetcher()->fetchSynchronously(fetchRequest);
6542 } 6542 }
6543 6543
6544 TEST_P(ParametrizedWebFrameTest, ManifestFetch) 6544 TEST_P(ParameterizedWebFrameTest, ManifestFetch)
6545 { 6545 {
6546 registerMockedHttpURLLoad("foo.html"); 6546 registerMockedHttpURLLoad("foo.html");
6547 registerMockedHttpURLLoad("link-manifest-fetch.json"); 6547 registerMockedHttpURLLoad("link-manifest-fetch.json");
6548 6548
6549 FrameTestHelpers::WebViewHelper webViewHelper(this); 6549 FrameTestHelpers::WebViewHelper webViewHelper(this);
6550 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6550 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6551 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document(); 6551 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document();
6552 6552
6553 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_baseURL + "link-manifest-fetch.json")); 6553 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_baseURL + "link-manifest-fetch.json"));
6554 6554
6555 EXPECT_TRUE(resource->isLoaded()); 6555 EXPECT_TRUE(resource->isLoaded());
6556 } 6556 }
6557 6557
6558 TEST_P(ParametrizedWebFrameTest, ManifestCSPFetchAllow) 6558 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchAllow)
6559 { 6559 {
6560 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json"); 6560 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json");
6561 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src *"); 6561 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src *");
6562 6562
6563 FrameTestHelpers::WebViewHelper webViewHelper(this); 6563 FrameTestHelpers::WebViewHelper webViewHelper(this);
6564 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6564 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6565 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document(); 6565 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document();
6566 6566
6567 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_notBaseURL + "link-manifest-fetch.json")); 6567 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_notBaseURL + "link-manifest-fetch.json"));
6568 6568
6569 EXPECT_TRUE(resource->isLoaded()); 6569 EXPECT_TRUE(resource->isLoaded());
6570 } 6570 }
6571 6571
6572 TEST_P(ParametrizedWebFrameTest, ManifestCSPFetchSelf) 6572 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchSelf)
6573 { 6573 {
6574 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json"); 6574 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json");
6575 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'"); 6575 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'");
6576 6576
6577 FrameTestHelpers::WebViewHelper webViewHelper(this); 6577 FrameTestHelpers::WebViewHelper webViewHelper(this);
6578 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6578 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6579 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document(); 6579 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document();
6580 6580
6581 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_notBaseURL + "link-manifest-fetch.json")); 6581 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_notBaseURL + "link-manifest-fetch.json"));
6582 6582
6583 EXPECT_EQ(0, resource.get()); // Fetching resource wasn't allowed. 6583 EXPECT_EQ(0, resource.get()); // Fetching resource wasn't allowed.
6584 } 6584 }
6585 6585
6586 TEST_P(ParametrizedWebFrameTest, ManifestCSPFetchSelfReportOnly) 6586 TEST_P(ParameterizedWebFrameTest, ManifestCSPFetchSelfReportOnly)
6587 { 6587 {
6588 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json"); 6588 URLTestHelpers::registerMockedURLLoad(toKURL(m_notBaseURL + "link-manifest-f etch.json"), "link-manifest-fetch.json");
6589 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'", /* repor t only */ true); 6589 registerMockedHttpURLLoadWithCSP("foo.html", "manifest-src 'self'", /* repor t only */ true);
6590 6590
6591 FrameTestHelpers::WebViewHelper webViewHelper(this); 6591 FrameTestHelpers::WebViewHelper webViewHelper(this);
6592 webViewHelper.initializeAndLoad(m_baseURL + "foo.html"); 6592 webViewHelper.initializeAndLoad(m_baseURL + "foo.html");
6593 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document(); 6593 Document* document = toWebLocalFrameImpl(webViewHelper.webViewImpl()->mainFr ame())->frame()->document();
6594 6594
6595 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_notBaseURL + "link-manifest-fetch.json")); 6595 ResourcePtr<Resource> resource = fetchManifest(document, toKURL(m_notBaseURL + "link-manifest-fetch.json"));
6596 6596
6597 EXPECT_TRUE(resource->isLoaded()); 6597 EXPECT_TRUE(resource->isLoaded());
6598 } 6598 }
6599 6599
6600 6600
6601 class DefaultPresentationChangeWebFrameClient : public FrameTestHelpers::TestWeb FrameClient { 6601 class DefaultPresentationChangeWebFrameClient : public FrameTestHelpers::TestWeb FrameClient {
6602 public: 6602 public:
6603 DefaultPresentationChangeWebFrameClient() : m_defaultPresentationChangeCount (0) { } 6603 DefaultPresentationChangeWebFrameClient() : m_defaultPresentationChangeCount (0) { }
6604 virtual void didChangeDefaultPresentation(WebLocalFrame*) override 6604 virtual void didChangeDefaultPresentation(WebLocalFrame*) override
6605 { 6605 {
6606 ++m_defaultPresentationChangeCount; 6606 ++m_defaultPresentationChangeCount;
6607 } 6607 }
6608 6608
6609 int defaultPresentationChangeCount() { return m_defaultPresentationChangeCou nt; } 6609 int defaultPresentationChangeCount() { return m_defaultPresentationChangeCou nt; }
6610 6610
6611 private: 6611 private:
6612 int m_defaultPresentationChangeCount; 6612 int m_defaultPresentationChangeCount;
6613 }; 6613 };
6614 6614
6615 TEST_P(ParametrizedWebFrameTest, NotifyDefaultPresentationChange) 6615 TEST_P(ParameterizedWebFrameTest, NotifyDefaultPresentationChange)
6616 { 6616 {
6617 registerMockedHttpURLLoad("link-presentation-url-change.html"); 6617 registerMockedHttpURLLoad("link-presentation-url-change.html");
6618 6618
6619 DefaultPresentationChangeWebFrameClient webFrameClient; 6619 DefaultPresentationChangeWebFrameClient webFrameClient;
6620 FrameTestHelpers::WebViewHelper webViewHelper(this); 6620 FrameTestHelpers::WebViewHelper webViewHelper(this);
6621 webViewHelper.initializeAndLoad(m_baseURL + "link-presentation-url-change.ht ml", true, &webFrameClient); 6621 webViewHelper.initializeAndLoad(m_baseURL + "link-presentation-url-change.ht ml", true, &webFrameClient);
6622 6622
6623 EXPECT_EQ(14, webFrameClient.defaultPresentationChangeCount()); 6623 EXPECT_EQ(14, webFrameClient.defaultPresentationChangeCount());
6624 } 6624 }
6625 6625
6626 6626
6627 TEST_P(ParametrizedWebFrameTest, ReloadBypassingCache) 6627 TEST_P(ParameterizedWebFrameTest, ReloadBypassingCache)
6628 { 6628 {
6629 // Check that a reload ignoring cache on a frame will result in the cache 6629 // Check that a reload ignoring cache on a frame will result in the cache
6630 // policy of the request being set to ReloadBypassingCache. 6630 // policy of the request being set to ReloadBypassingCache.
6631 registerMockedHttpURLLoad("foo.html"); 6631 registerMockedHttpURLLoad("foo.html");
6632 FrameTestHelpers::WebViewHelper webViewHelper(this); 6632 FrameTestHelpers::WebViewHelper webViewHelper(this);
6633 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true); 6633 webViewHelper.initializeAndLoad(m_baseURL + "foo.html", true);
6634 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6634 WebFrame* frame = webViewHelper.webView()->mainFrame();
6635 FrameTestHelpers::reloadFrameIgnoringCache(frame); 6635 FrameTestHelpers::reloadFrameIgnoringCache(frame);
6636 EXPECT_EQ(WebURLRequest::ReloadBypassingCache, frame->dataSource()->request( ).cachePolicy()); 6636 EXPECT_EQ(WebURLRequest::ReloadBypassingCache, frame->dataSource()->request( ).cachePolicy());
6637 } 6637 }
6638 6638
6639 static void nodeImageTestValidation(const IntSize& referenceBitmapSize, DragImag e* dragImage) 6639 static void nodeImageTestValidation(const IntSize& referenceBitmapSize, DragImag e* dragImage)
6640 { 6640 {
6641 // Prepare the reference bitmap. 6641 // Prepare the reference bitmap.
6642 SkBitmap bitmap; 6642 SkBitmap bitmap;
6643 bitmap.allocN32Pixels(referenceBitmapSize.width(), referenceBitmapSize.heigh t()); 6643 bitmap.allocN32Pixels(referenceBitmapSize.width(), referenceBitmapSize.heigh t());
6644 SkCanvas canvas(bitmap); 6644 SkCanvas canvas(bitmap);
6645 canvas.drawColor(SK_ColorGREEN); 6645 canvas.drawColor(SK_ColorGREEN);
6646 6646
6647 EXPECT_EQ(referenceBitmapSize.width(), dragImage->size().width()); 6647 EXPECT_EQ(referenceBitmapSize.width(), dragImage->size().width());
6648 EXPECT_EQ(referenceBitmapSize.height(), dragImage->size().height()); 6648 EXPECT_EQ(referenceBitmapSize.height(), dragImage->size().height());
6649 const SkBitmap& dragBitmap = dragImage->bitmap(); 6649 const SkBitmap& dragBitmap = dragImage->bitmap();
6650 SkAutoLockPixels lockPixel(dragBitmap); 6650 SkAutoLockPixels lockPixel(dragBitmap);
6651 EXPECT_EQ(0, memcmp(bitmap.getPixels(), dragBitmap.getPixels(), bitmap.getSi ze())); 6651 EXPECT_EQ(0, memcmp(bitmap.getPixels(), dragBitmap.getPixels(), bitmap.getSi ze()));
6652 } 6652 }
6653 6653
6654 TEST_P(ParametrizedWebFrameTest, NodeImageTestCSSTransform) 6654 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSSTransform)
6655 { 6655 {
6656 FrameTestHelpers::WebViewHelper webViewHelper(this); 6656 FrameTestHelpers::WebViewHelper webViewHelper(this);
6657 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-css-transform")); 6657 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-css-transform"));
6658 EXPECT_TRUE(dragImage); 6658 EXPECT_TRUE(dragImage);
6659 6659
6660 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6660 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6661 } 6661 }
6662 6662
6663 TEST_P(ParametrizedWebFrameTest, NodeImageTestCSS3DTransform) 6663 TEST_P(ParameterizedWebFrameTest, NodeImageTestCSS3DTransform)
6664 { 6664 {
6665 FrameTestHelpers::WebViewHelper webViewHelper(this); 6665 FrameTestHelpers::WebViewHelper webViewHelper(this);
6666 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-css-3dtransform")); 6666 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-css-3dtransform"));
6667 EXPECT_TRUE(dragImage); 6667 EXPECT_TRUE(dragImage);
6668 6668
6669 nodeImageTestValidation(IntSize(20, 40), dragImage.get()); 6669 nodeImageTestValidation(IntSize(20, 40), dragImage.get());
6670 } 6670 }
6671 6671
6672 TEST_P(ParametrizedWebFrameTest, NodeImageTestInlineBlock) 6672 TEST_P(ParameterizedWebFrameTest, NodeImageTestInlineBlock)
6673 { 6673 {
6674 FrameTestHelpers::WebViewHelper webViewHelper(this); 6674 FrameTestHelpers::WebViewHelper webViewHelper(this);
6675 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-inlineblock")); 6675 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-inlineblock"));
6676 EXPECT_TRUE(dragImage); 6676 EXPECT_TRUE(dragImage);
6677 6677
6678 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6678 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6679 } 6679 }
6680 6680
6681 TEST_P(ParametrizedWebFrameTest, NodeImageTestFloatLeft) 6681 TEST_P(ParameterizedWebFrameTest, NodeImageTestFloatLeft)
6682 { 6682 {
6683 FrameTestHelpers::WebViewHelper webViewHelper(this); 6683 FrameTestHelpers::WebViewHelper webViewHelper(this);
6684 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-float-left-overflow-hidden")); 6684 OwnPtr<DragImage> dragImage = nodeImageTestSetup(&webViewHelper, std::string ("case-float-left-overflow-hidden"));
6685 EXPECT_TRUE(dragImage); 6685 EXPECT_TRUE(dragImage);
6686 6686
6687 nodeImageTestValidation(IntSize(40, 40), dragImage.get()); 6687 nodeImageTestValidation(IntSize(40, 40), dragImage.get());
6688 } 6688 }
6689 6689
6690 // Crashes on Android: http://crbug.com/403804 6690 // Crashes on Android: http://crbug.com/403804
6691 #if OS(ANDROID) 6691 #if OS(ANDROID)
6692 TEST_P(ParametrizedWebFrameTest, DISABLED_PrintingBasic) 6692 TEST_P(ParameterizedWebFrameTest, DISABLED_PrintingBasic)
6693 #else 6693 #else
6694 TEST_P(ParametrizedWebFrameTest, PrintingBasic) 6694 TEST_P(ParameterizedWebFrameTest, PrintingBasic)
6695 #endif 6695 #endif
6696 { 6696 {
6697 FrameTestHelpers::WebViewHelper webViewHelper(this); 6697 FrameTestHelpers::WebViewHelper webViewHelper(this);
6698 webViewHelper.initializeAndLoad("data:text/html,Hello, world."); 6698 webViewHelper.initializeAndLoad("data:text/html,Hello, world.");
6699 6699
6700 WebFrame* frame = webViewHelper.webView()->mainFrame(); 6700 WebFrame* frame = webViewHelper.webView()->mainFrame();
6701 6701
6702 WebPrintParams printParams; 6702 WebPrintParams printParams;
6703 printParams.printContentArea.width = 500; 6703 printParams.printContentArea.width = 500;
6704 printParams.printContentArea.height = 500; 6704 printParams.printContentArea.height = 500;
(...skipping 22 matching lines...) Expand all
6727 6727
6728 private: 6728 private:
6729 virtual void didChangeThemeColor() 6729 virtual void didChangeThemeColor()
6730 { 6730 {
6731 m_didNotify = true; 6731 m_didNotify = true;
6732 } 6732 }
6733 6733
6734 bool m_didNotify; 6734 bool m_didNotify;
6735 }; 6735 };
6736 6736
6737 TEST_P(ParametrizedWebFrameTest, ThemeColor) 6737 TEST_P(ParameterizedWebFrameTest, ThemeColor)
6738 { 6738 {
6739 registerMockedHttpURLLoad("theme_color_test.html"); 6739 registerMockedHttpURLLoad("theme_color_test.html");
6740 FrameTestHelpers::WebViewHelper webViewHelper(this); 6740 FrameTestHelpers::WebViewHelper webViewHelper(this);
6741 ThemeColorTestWebFrameClient client; 6741 ThemeColorTestWebFrameClient client;
6742 webViewHelper.initializeAndLoad(m_baseURL + "theme_color_test.html", true, & client); 6742 webViewHelper.initializeAndLoad(m_baseURL + "theme_color_test.html", true, & client);
6743 EXPECT_TRUE(client.didNotify()); 6743 EXPECT_TRUE(client.didNotify());
6744 WebLocalFrameImpl* frame = webViewHelper.webViewImpl()->mainFrameImpl(); 6744 WebLocalFrameImpl* frame = webViewHelper.webViewImpl()->mainFrameImpl();
6745 EXPECT_EQ(0xff0000ff, frame->document().themeColor()); 6745 EXPECT_EQ(0xff0000ff, frame->document().themeColor());
6746 // Change color by rgb. 6746 // Change color by rgb.
6747 client.reset(); 6747 client.reset();
6748 frame->executeScript(WebScriptSource("document.getElementById('tc1').setAttr ibute('content', 'rgb(0, 0, 0)');")); 6748 frame->executeScript(WebScriptSource("document.getElementById('tc1').setAttr ibute('content', 'rgb(0, 0, 0)');"));
6749 EXPECT_TRUE(client.didNotify()); 6749 EXPECT_TRUE(client.didNotify());
6750 EXPECT_EQ(0xff000000, frame->document().themeColor()); 6750 EXPECT_EQ(0xff000000, frame->document().themeColor());
6751 // Change color by hsl. 6751 // Change color by hsl.
6752 client.reset(); 6752 client.reset();
6753 frame->executeScript(WebScriptSource("document.getElementById('tc1').setAttr ibute('content', 'hsl(240,100%, 50%)');")); 6753 frame->executeScript(WebScriptSource("document.getElementById('tc1').setAttr ibute('content', 'hsl(240,100%, 50%)');"));
6754 EXPECT_TRUE(client.didNotify()); 6754 EXPECT_TRUE(client.didNotify());
6755 EXPECT_EQ(0xff0000ff, frame->document().themeColor()); 6755 EXPECT_EQ(0xff0000ff, frame->document().themeColor());
6756 // Change of second theme-color meta tag will not change frame's theme 6756 // Change of second theme-color meta tag will not change frame's theme
6757 // color. 6757 // color.
6758 client.reset(); 6758 client.reset();
6759 frame->executeScript(WebScriptSource("document.getElementById('tc2').setAttr ibute('content', '#00FF00');")); 6759 frame->executeScript(WebScriptSource("document.getElementById('tc2').setAttr ibute('content', '#00FF00');"));
6760 EXPECT_TRUE(client.didNotify()); 6760 EXPECT_TRUE(client.didNotify());
6761 EXPECT_EQ(0xff0000ff, frame->document().themeColor()); 6761 EXPECT_EQ(0xff0000ff, frame->document().themeColor());
6762 } 6762 }
6763 6763
6764 // Make sure that an embedder-triggered detach with a remote frame parent 6764 // Make sure that an embedder-triggered detach with a remote frame parent
6765 // doesn't leave behind dangling pointers. 6765 // doesn't leave behind dangling pointers.
6766 TEST_P(ParametrizedWebFrameTest, EmbedderTriggeredDetachWithRemoteMainFrame) 6766 TEST_P(ParameterizedWebFrameTest, EmbedderTriggeredDetachWithRemoteMainFrame)
6767 { 6767 {
6768 // FIXME: Refactor some of this logic into WebViewHelper to make it easier t o 6768 // FIXME: Refactor some of this logic into WebViewHelper to make it easier t o
6769 // write tests with a top-level remote frame. 6769 // write tests with a top-level remote frame.
6770 FrameTestHelpers::TestWebViewClient viewClient; 6770 FrameTestHelpers::TestWebViewClient viewClient;
6771 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 6771 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
6772 WebView* view = WebView::create(&viewClient); 6772 WebView* view = WebView::create(&viewClient);
6773 view->setMainFrame(remoteClient.frame()); 6773 view->setMainFrame(remoteClient.frame());
6774 FrameTestHelpers::TestWebFrameClient childFrameClient; 6774 FrameTestHelpers::TestWebFrameClient childFrameClient;
6775 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr); 6775 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr);
6776 6776
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
7290 { 7290 {
7291 m_historyCommitType = historyCommitType; 7291 m_historyCommitType = historyCommitType;
7292 } 7292 }
7293 7293
7294 WebHistoryCommitType historyCommitType() const { return m_historyCommitType; } 7294 WebHistoryCommitType historyCommitType() const { return m_historyCommitType; }
7295 7295
7296 private: 7296 private:
7297 WebHistoryCommitType m_historyCommitType; 7297 WebHistoryCommitType m_historyCommitType;
7298 }; 7298 };
7299 7299
7300 TEST_P(ParametrizedWebFrameTest, RemoteFrameInitialCommitType) 7300 TEST_P(ParameterizedWebFrameTest, RemoteFrameInitialCommitType)
7301 { 7301 {
7302 FrameTestHelpers::TestWebViewClient viewClient; 7302 FrameTestHelpers::TestWebViewClient viewClient;
7303 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7303 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7304 WebView* view = WebView::create(&viewClient); 7304 WebView* view = WebView::create(&viewClient);
7305 view->setMainFrame(remoteClient.frame()); 7305 view->setMainFrame(remoteClient.frame());
7306 toRemoteFrame(toCoreFrame(view->mainFrame()))->securityContext()->setReplica tedOrigin(SecurityOrigin::create(toKURL(m_baseURL))); 7306 toRemoteFrame(toCoreFrame(view->mainFrame()))->securityContext()->setReplica tedOrigin(SecurityOrigin::create(toKURL(m_baseURL)));
7307 7307
7308 // If an iframe has a remote main frame, ensure the inital commit is correct ly identified as WebInitialCommitInChildFrame. 7308 // If an iframe has a remote main frame, ensure the inital commit is correct ly identified as WebInitialCommitInChildFrame.
7309 CommitTypeWebFrameClient childFrameClient; 7309 CommitTypeWebFrameClient childFrameClient;
7310 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr); 7310 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr);
(...skipping 10 matching lines...) Expand all
7321 7321
7322 void reset() { m_failed = false; } 7322 void reset() { m_failed = false; }
7323 bool failed() { return m_failed; } 7323 bool failed() { return m_failed; }
7324 7324
7325 bool m_failed; 7325 bool m_failed;
7326 }; 7326 };
7327 7327
7328 // FIXME: This would be better as a unittest on DocumentThreadableLoader but it 7328 // FIXME: This would be better as a unittest on DocumentThreadableLoader but it
7329 // requires spin-up of a frame. It may be possible to remove that requirement 7329 // requires spin-up of a frame. It may be possible to remove that requirement
7330 // and convert it to a unittest. 7330 // and convert it to a unittest.
7331 TEST_P(ParametrizedWebFrameTest, LoaderOriginAccess) 7331 TEST_P(ParameterizedWebFrameTest, LoaderOriginAccess)
7332 { 7332 {
7333 FrameTestHelpers::WebViewHelper webViewHelper(this); 7333 FrameTestHelpers::WebViewHelper webViewHelper(this);
7334 webViewHelper.initializeAndLoad("about:blank"); 7334 webViewHelper.initializeAndLoad("about:blank");
7335 7335
7336 SchemeRegistry::registerURLSchemeAsDisplayIsolated("chrome"); 7336 SchemeRegistry::registerURLSchemeAsDisplayIsolated("chrome");
7337 7337
7338 // Cross-origin request. 7338 // Cross-origin request.
7339 KURL resourceUrl(ParsedURLString, "chrome://test.pdf"); 7339 KURL resourceUrl(ParsedURLString, "chrome://test.pdf");
7340 registerMockedChromeURLLoad("test.pdf"); 7340 registerMockedChromeURLLoad("test.pdf");
7341 7341
(...skipping 10 matching lines...) Expand all
7352 EXPECT_TRUE(client.failed()); 7352 EXPECT_TRUE(client.failed());
7353 7353
7354 client.reset(); 7354 client.reset();
7355 // Try to load the request with cross origin access. Should succeed. 7355 // Try to load the request with cross origin access. Should succeed.
7356 options.crossOriginRequestPolicy = AllowCrossOriginRequests; 7356 options.crossOriginRequestPolicy = AllowCrossOriginRequests;
7357 DocumentThreadableLoader::loadResourceSynchronously( 7357 DocumentThreadableLoader::loadResourceSynchronously(
7358 *frame->document(), ResourceRequest(resourceUrl), client, options, resou rceLoaderOptions); 7358 *frame->document(), ResourceRequest(resourceUrl), client, options, resou rceLoaderOptions);
7359 EXPECT_FALSE(client.failed()); 7359 EXPECT_FALSE(client.failed());
7360 } 7360 }
7361 7361
7362 TEST_P(ParametrizedWebFrameTest, DetachRemoteFrame) 7362 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame)
7363 { 7363 {
7364 FrameTestHelpers::TestWebViewClient viewClient; 7364 FrameTestHelpers::TestWebViewClient viewClient;
7365 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7365 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7366 WebView* view = WebView::create(&viewClient); 7366 WebView* view = WebView::create(&viewClient);
7367 view->setMainFrame(remoteClient.frame()); 7367 view->setMainFrame(remoteClient.frame());
7368 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient; 7368 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient;
7369 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClie nt); 7369 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClie nt);
7370 childFrame->detach(); 7370 childFrame->detach();
7371 view->close(); 7371 view->close();
7372 } 7372 }
7373 7373
7374 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient { 7374 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient {
7375 public: 7375 public:
7376 virtual void didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace) 7376 virtual void didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace)
7377 { 7377 {
7378 messages.push_back(message); 7378 messages.push_back(message);
7379 } 7379 }
7380 7380
7381 std::vector<WebConsoleMessage> messages; 7381 std::vector<WebConsoleMessage> messages;
7382 }; 7382 };
7383 7383
7384 TEST_P(ParametrizedWebFrameTest, CrossDomainAccessErrorsUseCallingWindow) 7384 TEST_P(ParameterizedWebFrameTest, CrossDomainAccessErrorsUseCallingWindow)
7385 { 7385 {
7386 registerMockedHttpURLLoad("hidden_frames.html"); 7386 registerMockedHttpURLLoad("hidden_frames.html");
7387 registerMockedChromeURLLoad("hello_world.html"); 7387 registerMockedChromeURLLoad("hello_world.html");
7388 7388
7389 FrameTestHelpers::WebViewHelper webViewHelper(this); 7389 FrameTestHelpers::WebViewHelper webViewHelper(this);
7390 TestConsoleMessageWebFrameClient webFrameClient; 7390 TestConsoleMessageWebFrameClient webFrameClient;
7391 FrameTestHelpers::TestWebViewClient webViewClient; 7391 FrameTestHelpers::TestWebViewClient webViewClient;
7392 webViewHelper.initializeAndLoad(m_baseURL + "hidden_frames.html", true, &web FrameClient, &webViewClient); 7392 webViewHelper.initializeAndLoad(m_baseURL + "hidden_frames.html", true, &web FrameClient, &webViewClient);
7393 7393
7394 // Create another window with a cross-origin page, and point its opener to 7394 // Create another window with a cross-origin page, and point its opener to
(...skipping 17 matching lines...) Expand all
7412 EXPECT_TRUE(webFrameClient.messages.empty()); 7412 EXPECT_TRUE(webFrameClient.messages.empty());
7413 ASSERT_EQ(2u, popupWebFrameClient.messages.size()); 7413 ASSERT_EQ(2u, popupWebFrameClient.messages.size());
7414 EXPECT_TRUE(std::string::npos != popupWebFrameClient.messages[1].text.utf8() .find("Blocked a frame")); 7414 EXPECT_TRUE(std::string::npos != popupWebFrameClient.messages[1].text.utf8() .find("Blocked a frame"));
7415 7415
7416 // Manually reset to break WebViewHelpers' dependencies on the stack 7416 // Manually reset to break WebViewHelpers' dependencies on the stack
7417 // allocated WebFrameClients. 7417 // allocated WebFrameClients.
7418 webViewHelper.reset(); 7418 webViewHelper.reset();
7419 popupWebViewHelper.reset(); 7419 popupWebViewHelper.reset();
7420 } 7420 }
7421 7421
7422 TEST_P(ParametrizedWebFrameTest, CreateLocalChildWithPreviousSibling) 7422 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling)
7423 { 7423 {
7424 FrameTestHelpers::TestWebViewClient viewClient; 7424 FrameTestHelpers::TestWebViewClient viewClient;
7425 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7425 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7426 WebView* view = WebView::create(&viewClient); 7426 WebView* view = WebView::create(&viewClient);
7427 view->setMainFrame(remoteClient.frame()); 7427 view->setMainFrame(remoteClient.frame());
7428 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame(); 7428 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame();
7429 7429
7430 WebLocalFrame* secondFrame = parent->createLocalChild(WebTreeScopeType::Docu ment, "", WebSandboxFlags::None, nullptr, nullptr); 7430 WebLocalFrame* secondFrame = parent->createLocalChild(WebTreeScopeType::Docu ment, "", WebSandboxFlags::None, nullptr, nullptr);
7431 WebLocalFrame* fourthFrame = parent->createLocalChild(WebTreeScopeType::Docu ment, "", WebSandboxFlags::None, nullptr, secondFrame); 7431 WebLocalFrame* fourthFrame = parent->createLocalChild(WebTreeScopeType::Docu ment, "", WebSandboxFlags::None, nullptr, secondFrame);
7432 WebLocalFrame* thirdFrame = parent->createLocalChild(WebTreeScopeType::Docum ent, "", WebSandboxFlags::None, nullptr, secondFrame); 7432 WebLocalFrame* thirdFrame = parent->createLocalChild(WebTreeScopeType::Docum ent, "", WebSandboxFlags::None, nullptr, secondFrame);
(...skipping 15 matching lines...) Expand all
7448 7448
7449 EXPECT_EQ(parent, firstFrame->parent()); 7449 EXPECT_EQ(parent, firstFrame->parent());
7450 EXPECT_EQ(parent, secondFrame->parent()); 7450 EXPECT_EQ(parent, secondFrame->parent());
7451 EXPECT_EQ(parent, thirdFrame->parent()); 7451 EXPECT_EQ(parent, thirdFrame->parent());
7452 EXPECT_EQ(parent, fourthFrame->parent()); 7452 EXPECT_EQ(parent, fourthFrame->parent());
7453 7453
7454 view->close(); 7454 view->close();
7455 } 7455 }
7456 7456
7457 } // namespace blink 7457 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698