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

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

Issue 2710983003: Move HistoryItem handling to DocumentLoader (Closed)
Patch Set: Address kinuko's comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 2395 matching lines...) Expand 10 before | Expand all | Expand 10 after
2406 2406
2407 FrameTestHelpers::WebViewHelper webViewHelper; 2407 FrameTestHelpers::WebViewHelper webViewHelper;
2408 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 2408 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true,
2409 nullptr, &client, nullptr, 2409 nullptr, &client, nullptr,
2410 enableViewportSettings); 2410 enableViewportSettings);
2411 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2411 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2412 2412
2413 webViewHelper.webView()->setPageScaleFactor(3); 2413 webViewHelper.webView()->setPageScaleFactor(3);
2414 EXPECT_EQ(3, toLocalFrame(webViewHelper.webView()->page()->mainFrame()) 2414 EXPECT_EQ(3, toLocalFrame(webViewHelper.webView()->page()->mainFrame())
2415 ->loader() 2415 ->loader()
2416 .currentItem() 2416 .documentLoader()
2417 ->historyItem()
2417 ->pageScaleFactor()); 2418 ->pageScaleFactor());
2418 } 2419 }
2419 2420
2420 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem) { 2421 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem) {
2421 registerMockedHttpURLLoad("fixed_layout.html"); 2422 registerMockedHttpURLLoad("fixed_layout.html");
2422 2423
2423 FixedLayoutTestWebViewClient client; 2424 FixedLayoutTestWebViewClient client;
2424 client.m_screenInfo.deviceScaleFactor = 1; 2425 client.m_screenInfo.deviceScaleFactor = 1;
2425 int viewportWidth = 640; 2426 int viewportWidth = 640;
2426 int viewportHeight = 480; 2427 int viewportHeight = 480;
2427 2428
2428 FrameTestHelpers::WebViewHelper webViewHelper; 2429 FrameTestHelpers::WebViewHelper webViewHelper;
2429 webViewHelper.initialize(true, nullptr, &client, nullptr, 2430 webViewHelper.initialize(true, nullptr, &client, nullptr,
2430 enableViewportSettings); 2431 enableViewportSettings);
2431 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2432 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2432 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), 2433 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(),
2433 m_baseURL + "fixed_layout.html"); 2434 m_baseURL + "fixed_layout.html");
2434 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2435 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2435 2436
2436 int defaultFixedLayoutWidth = 980; 2437 int defaultFixedLayoutWidth = 980;
2437 float minimumPageScaleFactor = viewportWidth / (float)defaultFixedLayoutWidth; 2438 float minimumPageScaleFactor = viewportWidth / (float)defaultFixedLayoutWidth;
2438 EXPECT_EQ(minimumPageScaleFactor, 2439 EXPECT_EQ(minimumPageScaleFactor,
2439 toLocalFrame(webViewHelper.webView()->page()->mainFrame()) 2440 toLocalFrame(webViewHelper.webView()->page()->mainFrame())
2440 ->loader() 2441 ->loader()
2441 .currentItem() 2442 .documentLoader()
2443 ->historyItem()
2442 ->pageScaleFactor()); 2444 ->pageScaleFactor());
2443 } 2445 }
2444 2446
2445 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView) { 2447 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView) {
2446 registerMockedHttpURLLoad("large-div.html"); 2448 registerMockedHttpURLLoad("large-div.html");
2447 2449
2448 FixedLayoutTestWebViewClient client; 2450 FixedLayoutTestWebViewClient client;
2449 client.m_screenInfo.deviceScaleFactor = 1; 2451 client.m_screenInfo.deviceScaleFactor = 1;
2450 // Small viewport to ensure there are always scrollbars. 2452 // Small viewport to ensure there are always scrollbars.
2451 int viewportWidth = 64; 2453 int viewportWidth = 64;
(...skipping 4576 matching lines...) Expand 10 before | Expand all | Expand 10 after
7028 } 7030 }
7029 7031
7030 TEST_P(ParameterizedWebFrameTest, BackToReload) { 7032 TEST_P(ParameterizedWebFrameTest, BackToReload) {
7031 registerMockedHttpURLLoad("fragment_middle_click.html"); 7033 registerMockedHttpURLLoad("fragment_middle_click.html");
7032 FrameTestHelpers::WebViewHelper webViewHelper; 7034 FrameTestHelpers::WebViewHelper webViewHelper;
7033 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", 7035 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html",
7034 true); 7036 true);
7035 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7037 WebFrame* frame = webViewHelper.webView()->mainFrame();
7036 const FrameLoader& mainFrameLoader = 7038 const FrameLoader& mainFrameLoader =
7037 webViewHelper.webView()->mainFrameImpl()->frame()->loader(); 7039 webViewHelper.webView()->mainFrameImpl()->frame()->loader();
7038 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem(); 7040 Persistent<HistoryItem> firstItem =
7041 mainFrameLoader.documentLoader()->historyItem();
7039 EXPECT_TRUE(firstItem); 7042 EXPECT_TRUE(firstItem);
7040 7043
7041 registerMockedHttpURLLoad("white-1x1.png"); 7044 registerMockedHttpURLLoad("white-1x1.png");
7042 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 7045 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
7043 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 7046 EXPECT_NE(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7044 7047
7045 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()), 7048 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()),
7046 WebHistoryDifferentDocumentLoad, 7049 WebHistoryDifferentDocumentLoad,
7047 WebCachePolicy::UseProtocolCachePolicy); 7050 WebCachePolicy::UseProtocolCachePolicy);
7048 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem()); 7051 EXPECT_EQ(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7049 7052
7050 FrameTestHelpers::reloadFrame(frame); 7053 FrameTestHelpers::reloadFrame(frame);
7051 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, 7054 EXPECT_EQ(WebCachePolicy::ValidatingCacheData,
7052 frame->dataSource()->getRequest().getCachePolicy()); 7055 frame->dataSource()->getRequest().getCachePolicy());
7053 } 7056 }
7054 7057
7055 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload) { 7058 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload) {
7056 registerMockedHttpURLLoad("page_with_blank_iframe.html"); 7059 registerMockedHttpURLLoad("page_with_blank_iframe.html");
7057 FrameTestHelpers::WebViewHelper webViewHelper; 7060 FrameTestHelpers::WebViewHelper webViewHelper;
7058 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html", 7061 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html",
(...skipping 13 matching lines...) Expand all
7072 WebHistoryItem item; 7075 WebHistoryItem item;
7073 item.initialize(); 7076 item.initialize();
7074 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png")); 7077 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png"));
7075 item.setURLString(historyURL.string()); 7078 item.setURLString(historyURL.string());
7076 WebURLRequest request = mainFrame->requestFromHistoryItem( 7079 WebURLRequest request = mainFrame->requestFromHistoryItem(
7077 item, WebCachePolicy::UseProtocolCachePolicy); 7080 item, WebCachePolicy::UseProtocolCachePolicy);
7078 mainFrame->load(request, WebFrameLoadType::BackForward, item); 7081 mainFrame->load(request, WebFrameLoadType::BackForward, item);
7079 7082
7080 FrameTestHelpers::reloadFrame(childFrame); 7083 FrameTestHelpers::reloadFrame(childFrame);
7081 EXPECT_EQ(item.urlString(), mainFrame->document().url().string()); 7084 EXPECT_EQ(item.urlString(), mainFrame->document().url().string());
7082 EXPECT_EQ(item.urlString(), 7085 EXPECT_EQ(
7083 WebString(mainFrameLoader.currentItem()->urlString())); 7086 item.urlString(),
7087 WebString(mainFrameLoader.documentLoader()->historyItem()->urlString()));
7084 } 7088 }
7085 7089
7086 TEST_P(ParameterizedWebFrameTest, ReloadPost) { 7090 TEST_P(ParameterizedWebFrameTest, ReloadPost) {
7087 registerMockedHttpURLLoad("reload_post.html"); 7091 registerMockedHttpURLLoad("reload_post.html");
7088 FrameTestHelpers::WebViewHelper webViewHelper; 7092 FrameTestHelpers::WebViewHelper webViewHelper;
7089 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true); 7093 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true);
7090 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7094 WebFrame* frame = webViewHelper.webView()->mainFrame();
7091 7095
7092 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), 7096 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(),
7093 "javascript:document.forms[0].submit()"); 7097 "javascript:document.forms[0].submit()");
(...skipping 12 matching lines...) Expand all
7106 } 7110 }
7107 7111
7108 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload) { 7112 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload) {
7109 registerMockedHttpURLLoad("fragment_middle_click.html"); 7113 registerMockedHttpURLLoad("fragment_middle_click.html");
7110 FrameTestHelpers::WebViewHelper webViewHelper; 7114 FrameTestHelpers::WebViewHelper webViewHelper;
7111 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", 7115 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html",
7112 true); 7116 true);
7113 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7117 WebFrame* frame = webViewHelper.webView()->mainFrame();
7114 const FrameLoader& mainFrameLoader = 7118 const FrameLoader& mainFrameLoader =
7115 webViewHelper.webView()->mainFrameImpl()->frame()->loader(); 7119 webViewHelper.webView()->mainFrameImpl()->frame()->loader();
7116 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem(); 7120 Persistent<HistoryItem> firstItem =
7121 mainFrameLoader.documentLoader()->historyItem();
7117 EXPECT_TRUE(firstItem); 7122 EXPECT_TRUE(firstItem);
7118 7123
7119 registerMockedHttpURLLoad("white-1x1.png"); 7124 registerMockedHttpURLLoad("white-1x1.png");
7120 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 7125 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
7121 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 7126 EXPECT_NE(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7122 7127
7123 // Cache policy overrides should take. 7128 // Cache policy overrides should take.
7124 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem), 7129 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem),
7125 WebHistoryDifferentDocumentLoad, 7130 WebHistoryDifferentDocumentLoad,
7126 WebCachePolicy::ValidatingCacheData); 7131 WebCachePolicy::ValidatingCacheData);
7127 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem()); 7132 EXPECT_EQ(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7128 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, 7133 EXPECT_EQ(WebCachePolicy::ValidatingCacheData,
7129 frame->dataSource()->getRequest().getCachePolicy()); 7134 frame->dataSource()->getRequest().getCachePolicy());
7130 } 7135 }
7131 7136
7132 class TestCachePolicyWebFrameClient 7137 class TestCachePolicyWebFrameClient
7133 : public FrameTestHelpers::TestWebFrameClient { 7138 : public FrameTestHelpers::TestWebFrameClient {
7134 public: 7139 public:
7135 explicit TestCachePolicyWebFrameClient( 7140 explicit TestCachePolicyWebFrameClient(
7136 TestCachePolicyWebFrameClient* parentClient) 7141 TestCachePolicyWebFrameClient* parentClient)
7137 : m_parentClient(parentClient), 7142 : m_parentClient(parentClient),
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
7395 private: 7400 private:
7396 WebHistoryCommitType m_lastCommitType; 7401 WebHistoryCommitType m_lastCommitType;
7397 }; 7402 };
7398 7403
7399 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType) { 7404 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType) {
7400 registerMockedHttpURLLoad("push_state.html"); 7405 registerMockedHttpURLLoad("push_state.html");
7401 TestDidNavigateCommitTypeWebFrameClient client; 7406 TestDidNavigateCommitTypeWebFrameClient client;
7402 FrameTestHelpers::WebViewHelper webViewHelper; 7407 FrameTestHelpers::WebViewHelper webViewHelper;
7403 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad( 7408 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(
7404 m_baseURL + "push_state.html", true, &client); 7409 m_baseURL + "push_state.html", true, &client);
7405 Persistent<HistoryItem> item = 7410 Persistent<HistoryItem> item = toLocalFrame(webViewImpl->page()->mainFrame())
7406 toLocalFrame(webViewImpl->page()->mainFrame())->loader().currentItem(); 7411 ->loader()
7412 .documentLoader()
7413 ->historyItem();
7407 runPendingTasks(); 7414 runPendingTasks();
7408 7415
7409 toLocalFrame(webViewImpl->page()->mainFrame()) 7416 toLocalFrame(webViewImpl->page()->mainFrame())
7410 ->loader() 7417 ->loader()
7411 .load( 7418 .load(FrameLoadRequest(nullptr,
7412 FrameLoadRequest( 7419 item->generateResourceRequest(
7413 nullptr, FrameLoader::resourceRequestFromHistoryItem( 7420 WebCachePolicy::UseProtocolCachePolicy)),
7414 item.get(), WebCachePolicy::UseProtocolCachePolicy)), 7421 FrameLoadTypeBackForward, item.get(), HistorySameDocumentLoad);
7415 FrameLoadTypeBackForward, item.get(), HistorySameDocumentLoad);
7416 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType()); 7422 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType());
7417 } 7423 }
7418 7424
7419 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 7425 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
7420 public: 7426 public:
7421 TestHistoryWebFrameClient() { 7427 TestHistoryWebFrameClient() {
7422 m_replacesCurrentHistoryItem = false; 7428 m_replacesCurrentHistoryItem = false;
7423 } 7429 }
7424 7430
7425 void didStartProvisionalLoad(WebDataSource* dataSource, 7431 void didStartProvisionalLoad(WebDataSource* dataSource,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
7531 7537
7532 FrameTestHelpers::WebViewHelper webViewHelper; 7538 FrameTestHelpers::WebViewHelper webViewHelper;
7533 webViewHelper.initialize(); 7539 webViewHelper.initialize();
7534 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7540 WebFrame* frame = webViewHelper.webView()->mainFrame();
7535 const FrameLoader& mainFrameLoader = 7541 const FrameLoader& mainFrameLoader =
7536 webViewHelper.webView()->mainFrameImpl()->frame()->loader(); 7542 webViewHelper.webView()->mainFrameImpl()->frame()->loader();
7537 WebURLRequest request(toKURL(url)); 7543 WebURLRequest request(toKURL(url));
7538 frame->loadRequest(request); 7544 frame->loadRequest(request);
7539 7545
7540 // Before commit, there is no history item. 7546 // Before commit, there is no history item.
7541 EXPECT_FALSE(mainFrameLoader.currentItem()); 7547 EXPECT_FALSE(mainFrameLoader.documentLoader()->historyItem());
7542 7548
7543 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(frame); 7549 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(frame);
7544 7550
7545 // After commit, there is. 7551 // After commit, there is.
7546 HistoryItem* item = mainFrameLoader.currentItem(); 7552 HistoryItem* item = mainFrameLoader.documentLoader()->historyItem();
7547 ASSERT_TRUE(item); 7553 ASSERT_TRUE(item);
7548 EXPECT_EQ(WTF::String(url.data()), item->urlString()); 7554 EXPECT_EQ(WTF::String(url.data()), item->urlString());
7549 } 7555 }
7550 7556
7551 class FailCreateChildFrame : public FrameTestHelpers::TestWebFrameClient { 7557 class FailCreateChildFrame : public FrameTestHelpers::TestWebFrameClient {
7552 public: 7558 public:
7553 FailCreateChildFrame() : m_callCount(0) {} 7559 FailCreateChildFrame() : m_callCount(0) {}
7554 7560
7555 WebLocalFrame* createChildFrame( 7561 WebLocalFrame* createChildFrame(
7556 WebLocalFrame* parent, 7562 WebLocalFrame* parent,
(...skipping 4002 matching lines...) Expand 10 before | Expand all | Expand 10 after
11559 EXPECT_FALSE(testSelectAll("<textarea></textarea>")); 11565 EXPECT_FALSE(testSelectAll("<textarea></textarea>"));
11560 EXPECT_TRUE(testSelectAll("<textarea>nonempty</textarea>")); 11566 EXPECT_TRUE(testSelectAll("<textarea>nonempty</textarea>"));
11561 EXPECT_FALSE(testSelectAll("<input>")); 11567 EXPECT_FALSE(testSelectAll("<input>"));
11562 EXPECT_TRUE(testSelectAll("<input value='nonempty'>")); 11568 EXPECT_TRUE(testSelectAll("<input value='nonempty'>"));
11563 // TODO(amaralp): Empty contenteditable should not have select all enabled. 11569 // TODO(amaralp): Empty contenteditable should not have select all enabled.
11564 EXPECT_TRUE(testSelectAll("<div contenteditable></div>")); 11570 EXPECT_TRUE(testSelectAll("<div contenteditable></div>"));
11565 EXPECT_TRUE(testSelectAll("<div contenteditable>nonempty</div>")); 11571 EXPECT_TRUE(testSelectAll("<div contenteditable>nonempty</div>"));
11566 } 11572 }
11567 11573
11568 } // namespace blink 11574 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/tests/VisualViewportTest.cpp ('k') | third_party/WebKit/Source/web/tests/WebViewTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698