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

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

Issue 2710983003: Move HistoryItem handling to DocumentLoader (Closed)
Patch Set: Address yhirano'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 2392 matching lines...) Expand 10 before | Expand all | Expand 10 after
2403 2403
2404 FrameTestHelpers::WebViewHelper webViewHelper; 2404 FrameTestHelpers::WebViewHelper webViewHelper;
2405 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 2405 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true,
2406 nullptr, &client, nullptr, 2406 nullptr, &client, nullptr,
2407 enableViewportSettings); 2407 enableViewportSettings);
2408 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2408 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2409 2409
2410 webViewHelper.webView()->setPageScaleFactor(3); 2410 webViewHelper.webView()->setPageScaleFactor(3);
2411 EXPECT_EQ(3, toLocalFrame(webViewHelper.webView()->page()->mainFrame()) 2411 EXPECT_EQ(3, toLocalFrame(webViewHelper.webView()->page()->mainFrame())
2412 ->loader() 2412 ->loader()
2413 .currentItem() 2413 .documentLoader()
2414 ->historyItem()
2414 ->pageScaleFactor()); 2415 ->pageScaleFactor());
2415 } 2416 }
2416 2417
2417 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem) { 2418 TEST_P(ParameterizedWebFrameTest, initialScaleWrittenToHistoryItem) {
2418 registerMockedHttpURLLoad("fixed_layout.html"); 2419 registerMockedHttpURLLoad("fixed_layout.html");
2419 2420
2420 FixedLayoutTestWebViewClient client; 2421 FixedLayoutTestWebViewClient client;
2421 client.m_screenInfo.deviceScaleFactor = 1; 2422 client.m_screenInfo.deviceScaleFactor = 1;
2422 int viewportWidth = 640; 2423 int viewportWidth = 640;
2423 int viewportHeight = 480; 2424 int viewportHeight = 480;
2424 2425
2425 FrameTestHelpers::WebViewHelper webViewHelper; 2426 FrameTestHelpers::WebViewHelper webViewHelper;
2426 webViewHelper.initialize(true, nullptr, &client, nullptr, 2427 webViewHelper.initialize(true, nullptr, &client, nullptr,
2427 enableViewportSettings); 2428 enableViewportSettings);
2428 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); 2429 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5);
2429 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), 2430 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(),
2430 m_baseURL + "fixed_layout.html"); 2431 m_baseURL + "fixed_layout.html");
2431 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); 2432 webViewHelper.resize(WebSize(viewportWidth, viewportHeight));
2432 2433
2433 int defaultFixedLayoutWidth = 980; 2434 int defaultFixedLayoutWidth = 980;
2434 float minimumPageScaleFactor = viewportWidth / (float)defaultFixedLayoutWidth; 2435 float minimumPageScaleFactor = viewportWidth / (float)defaultFixedLayoutWidth;
2435 EXPECT_EQ(minimumPageScaleFactor, 2436 EXPECT_EQ(minimumPageScaleFactor,
2436 toLocalFrame(webViewHelper.webView()->page()->mainFrame()) 2437 toLocalFrame(webViewHelper.webView()->page()->mainFrame())
2437 ->loader() 2438 ->loader()
2438 .currentItem() 2439 .documentLoader()
2440 ->historyItem()
2439 ->pageScaleFactor()); 2441 ->pageScaleFactor());
2440 } 2442 }
2441 2443
2442 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView) { 2444 TEST_P(ParameterizedWebFrameTest, pageScaleFactorDoesntShrinkFrameView) {
2443 registerMockedHttpURLLoad("large-div.html"); 2445 registerMockedHttpURLLoad("large-div.html");
2444 2446
2445 FixedLayoutTestWebViewClient client; 2447 FixedLayoutTestWebViewClient client;
2446 client.m_screenInfo.deviceScaleFactor = 1; 2448 client.m_screenInfo.deviceScaleFactor = 1;
2447 // Small viewport to ensure there are always scrollbars. 2449 // Small viewport to ensure there are always scrollbars.
2448 int viewportWidth = 64; 2450 int viewportWidth = 64;
(...skipping 4576 matching lines...) Expand 10 before | Expand all | Expand 10 after
7025 } 7027 }
7026 7028
7027 TEST_P(ParameterizedWebFrameTest, BackToReload) { 7029 TEST_P(ParameterizedWebFrameTest, BackToReload) {
7028 registerMockedHttpURLLoad("fragment_middle_click.html"); 7030 registerMockedHttpURLLoad("fragment_middle_click.html");
7029 FrameTestHelpers::WebViewHelper webViewHelper; 7031 FrameTestHelpers::WebViewHelper webViewHelper;
7030 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", 7032 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html",
7031 true); 7033 true);
7032 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7034 WebFrame* frame = webViewHelper.webView()->mainFrame();
7033 const FrameLoader& mainFrameLoader = 7035 const FrameLoader& mainFrameLoader =
7034 webViewHelper.webView()->mainFrameImpl()->frame()->loader(); 7036 webViewHelper.webView()->mainFrameImpl()->frame()->loader();
7035 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem(); 7037 Persistent<HistoryItem> firstItem =
7038 mainFrameLoader.documentLoader()->historyItem();
7036 EXPECT_TRUE(firstItem); 7039 EXPECT_TRUE(firstItem);
7037 7040
7038 registerMockedHttpURLLoad("white-1x1.png"); 7041 registerMockedHttpURLLoad("white-1x1.png");
7039 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 7042 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
7040 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 7043 EXPECT_NE(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7041 7044
7042 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()), 7045 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem.get()),
7043 WebHistoryDifferentDocumentLoad, 7046 WebHistoryDifferentDocumentLoad,
7044 WebCachePolicy::UseProtocolCachePolicy); 7047 WebCachePolicy::UseProtocolCachePolicy);
7045 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem()); 7048 EXPECT_EQ(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7046 7049
7047 FrameTestHelpers::reloadFrame(frame); 7050 FrameTestHelpers::reloadFrame(frame);
7048 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, 7051 EXPECT_EQ(WebCachePolicy::ValidatingCacheData,
7049 frame->dataSource()->getRequest().getCachePolicy()); 7052 frame->dataSource()->getRequest().getCachePolicy());
7050 } 7053 }
7051 7054
7052 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload) { 7055 TEST_P(ParameterizedWebFrameTest, BackDuringChildFrameReload) {
7053 registerMockedHttpURLLoad("page_with_blank_iframe.html"); 7056 registerMockedHttpURLLoad("page_with_blank_iframe.html");
7054 FrameTestHelpers::WebViewHelper webViewHelper; 7057 FrameTestHelpers::WebViewHelper webViewHelper;
7055 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html", 7058 webViewHelper.initializeAndLoad(m_baseURL + "page_with_blank_iframe.html",
(...skipping 13 matching lines...) Expand all
7069 WebHistoryItem item; 7072 WebHistoryItem item;
7070 item.initialize(); 7073 item.initialize();
7071 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png")); 7074 WebURL historyURL(toKURL(m_baseURL + "white-1x1.png"));
7072 item.setURLString(historyURL.string()); 7075 item.setURLString(historyURL.string());
7073 WebURLRequest request = mainFrame->requestFromHistoryItem( 7076 WebURLRequest request = mainFrame->requestFromHistoryItem(
7074 item, WebCachePolicy::UseProtocolCachePolicy); 7077 item, WebCachePolicy::UseProtocolCachePolicy);
7075 mainFrame->load(request, WebFrameLoadType::BackForward, item); 7078 mainFrame->load(request, WebFrameLoadType::BackForward, item);
7076 7079
7077 FrameTestHelpers::reloadFrame(childFrame); 7080 FrameTestHelpers::reloadFrame(childFrame);
7078 EXPECT_EQ(item.urlString(), mainFrame->document().url().string()); 7081 EXPECT_EQ(item.urlString(), mainFrame->document().url().string());
7079 EXPECT_EQ(item.urlString(), 7082 EXPECT_EQ(
7080 WebString(mainFrameLoader.currentItem()->urlString())); 7083 item.urlString(),
7084 WebString(mainFrameLoader.documentLoader()->historyItem()->urlString()));
7081 } 7085 }
7082 7086
7083 TEST_P(ParameterizedWebFrameTest, ReloadPost) { 7087 TEST_P(ParameterizedWebFrameTest, ReloadPost) {
7084 registerMockedHttpURLLoad("reload_post.html"); 7088 registerMockedHttpURLLoad("reload_post.html");
7085 FrameTestHelpers::WebViewHelper webViewHelper; 7089 FrameTestHelpers::WebViewHelper webViewHelper;
7086 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true); 7090 webViewHelper.initializeAndLoad(m_baseURL + "reload_post.html", true);
7087 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7091 WebFrame* frame = webViewHelper.webView()->mainFrame();
7088 7092
7089 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), 7093 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(),
7090 "javascript:document.forms[0].submit()"); 7094 "javascript:document.forms[0].submit()");
(...skipping 12 matching lines...) Expand all
7103 } 7107 }
7104 7108
7105 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload) { 7109 TEST_P(ParameterizedWebFrameTest, LoadHistoryItemReload) {
7106 registerMockedHttpURLLoad("fragment_middle_click.html"); 7110 registerMockedHttpURLLoad("fragment_middle_click.html");
7107 FrameTestHelpers::WebViewHelper webViewHelper; 7111 FrameTestHelpers::WebViewHelper webViewHelper;
7108 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", 7112 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html",
7109 true); 7113 true);
7110 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7114 WebFrame* frame = webViewHelper.webView()->mainFrame();
7111 const FrameLoader& mainFrameLoader = 7115 const FrameLoader& mainFrameLoader =
7112 webViewHelper.webView()->mainFrameImpl()->frame()->loader(); 7116 webViewHelper.webView()->mainFrameImpl()->frame()->loader();
7113 Persistent<HistoryItem> firstItem = mainFrameLoader.currentItem(); 7117 Persistent<HistoryItem> firstItem =
7118 mainFrameLoader.documentLoader()->historyItem();
7114 EXPECT_TRUE(firstItem); 7119 EXPECT_TRUE(firstItem);
7115 7120
7116 registerMockedHttpURLLoad("white-1x1.png"); 7121 registerMockedHttpURLLoad("white-1x1.png");
7117 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png"); 7122 FrameTestHelpers::loadFrame(frame, m_baseURL + "white-1x1.png");
7118 EXPECT_NE(firstItem.get(), mainFrameLoader.currentItem()); 7123 EXPECT_NE(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7119 7124
7120 // Cache policy overrides should take. 7125 // Cache policy overrides should take.
7121 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem), 7126 FrameTestHelpers::loadHistoryItem(frame, WebHistoryItem(firstItem),
7122 WebHistoryDifferentDocumentLoad, 7127 WebHistoryDifferentDocumentLoad,
7123 WebCachePolicy::ValidatingCacheData); 7128 WebCachePolicy::ValidatingCacheData);
7124 EXPECT_EQ(firstItem.get(), mainFrameLoader.currentItem()); 7129 EXPECT_EQ(firstItem.get(), mainFrameLoader.documentLoader()->historyItem());
7125 EXPECT_EQ(WebCachePolicy::ValidatingCacheData, 7130 EXPECT_EQ(WebCachePolicy::ValidatingCacheData,
7126 frame->dataSource()->getRequest().getCachePolicy()); 7131 frame->dataSource()->getRequest().getCachePolicy());
7127 } 7132 }
7128 7133
7129 class TestCachePolicyWebFrameClient 7134 class TestCachePolicyWebFrameClient
7130 : public FrameTestHelpers::TestWebFrameClient { 7135 : public FrameTestHelpers::TestWebFrameClient {
7131 public: 7136 public:
7132 explicit TestCachePolicyWebFrameClient( 7137 explicit TestCachePolicyWebFrameClient(
7133 TestCachePolicyWebFrameClient* parentClient) 7138 TestCachePolicyWebFrameClient* parentClient)
7134 : m_parentClient(parentClient), 7139 : m_parentClient(parentClient),
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
7392 private: 7397 private:
7393 WebHistoryCommitType m_lastCommitType; 7398 WebHistoryCommitType m_lastCommitType;
7394 }; 7399 };
7395 7400
7396 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType) { 7401 TEST_P(ParameterizedWebFrameTest, SameDocumentHistoryNavigationCommitType) {
7397 registerMockedHttpURLLoad("push_state.html"); 7402 registerMockedHttpURLLoad("push_state.html");
7398 TestDidNavigateCommitTypeWebFrameClient client; 7403 TestDidNavigateCommitTypeWebFrameClient client;
7399 FrameTestHelpers::WebViewHelper webViewHelper; 7404 FrameTestHelpers::WebViewHelper webViewHelper;
7400 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad( 7405 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(
7401 m_baseURL + "push_state.html", true, &client); 7406 m_baseURL + "push_state.html", true, &client);
7402 Persistent<HistoryItem> item = 7407 Persistent<HistoryItem> item = toLocalFrame(webViewImpl->page()->mainFrame())
7403 toLocalFrame(webViewImpl->page()->mainFrame())->loader().currentItem(); 7408 ->loader()
7409 .documentLoader()
7410 ->historyItem();
7404 runPendingTasks(); 7411 runPendingTasks();
7405 7412
7406 toLocalFrame(webViewImpl->page()->mainFrame()) 7413 toLocalFrame(webViewImpl->page()->mainFrame())
7407 ->loader() 7414 ->loader()
7408 .load( 7415 .load(FrameLoadRequest(nullptr,
7409 FrameLoadRequest( 7416 item->generateResourceRequest(
7410 nullptr, FrameLoader::resourceRequestFromHistoryItem( 7417 WebCachePolicy::UseProtocolCachePolicy)),
7411 item.get(), WebCachePolicy::UseProtocolCachePolicy)), 7418 FrameLoadTypeBackForward, item.get(), HistorySameDocumentLoad);
7412 FrameLoadTypeBackForward, item.get(), HistorySameDocumentLoad);
7413 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType()); 7419 EXPECT_EQ(WebBackForwardCommit, client.lastCommitType());
7414 } 7420 }
7415 7421
7416 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 7422 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
7417 public: 7423 public:
7418 TestHistoryWebFrameClient() { 7424 TestHistoryWebFrameClient() {
7419 m_replacesCurrentHistoryItem = false; 7425 m_replacesCurrentHistoryItem = false;
7420 } 7426 }
7421 7427
7422 void didStartProvisionalLoad(WebDataSource* dataSource, 7428 void didStartProvisionalLoad(WebDataSource* dataSource,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
7528 7534
7529 FrameTestHelpers::WebViewHelper webViewHelper; 7535 FrameTestHelpers::WebViewHelper webViewHelper;
7530 webViewHelper.initialize(); 7536 webViewHelper.initialize();
7531 WebFrame* frame = webViewHelper.webView()->mainFrame(); 7537 WebFrame* frame = webViewHelper.webView()->mainFrame();
7532 const FrameLoader& mainFrameLoader = 7538 const FrameLoader& mainFrameLoader =
7533 webViewHelper.webView()->mainFrameImpl()->frame()->loader(); 7539 webViewHelper.webView()->mainFrameImpl()->frame()->loader();
7534 WebURLRequest request(toKURL(url)); 7540 WebURLRequest request(toKURL(url));
7535 frame->loadRequest(request); 7541 frame->loadRequest(request);
7536 7542
7537 // Before commit, there is no history item. 7543 // Before commit, there is no history item.
7538 EXPECT_FALSE(mainFrameLoader.currentItem()); 7544 EXPECT_FALSE(mainFrameLoader.documentLoader()->historyItem());
7539 7545
7540 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(frame); 7546 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(frame);
7541 7547
7542 // After commit, there is. 7548 // After commit, there is.
7543 HistoryItem* item = mainFrameLoader.currentItem(); 7549 HistoryItem* item = mainFrameLoader.documentLoader()->historyItem();
7544 ASSERT_TRUE(item); 7550 ASSERT_TRUE(item);
7545 EXPECT_EQ(WTF::String(url.data()), item->urlString()); 7551 EXPECT_EQ(WTF::String(url.data()), item->urlString());
7546 } 7552 }
7547 7553
7548 class FailCreateChildFrame : public FrameTestHelpers::TestWebFrameClient { 7554 class FailCreateChildFrame : public FrameTestHelpers::TestWebFrameClient {
7549 public: 7555 public:
7550 FailCreateChildFrame() : m_callCount(0) {} 7556 FailCreateChildFrame() : m_callCount(0) {}
7551 7557
7552 WebLocalFrame* createChildFrame( 7558 WebLocalFrame* createChildFrame(
7553 WebLocalFrame* parent, 7559 WebLocalFrame* parent,
(...skipping 3945 matching lines...) Expand 10 before | Expand all | Expand 10 after
11499 EXPECT_FALSE(testSelectAll("<textarea></textarea>")); 11505 EXPECT_FALSE(testSelectAll("<textarea></textarea>"));
11500 EXPECT_TRUE(testSelectAll("<textarea>nonempty</textarea>")); 11506 EXPECT_TRUE(testSelectAll("<textarea>nonempty</textarea>"));
11501 EXPECT_FALSE(testSelectAll("<input>")); 11507 EXPECT_FALSE(testSelectAll("<input>"));
11502 EXPECT_TRUE(testSelectAll("<input value='nonempty'>")); 11508 EXPECT_TRUE(testSelectAll("<input value='nonempty'>"));
11503 // TODO(amaralp): Empty contenteditable should not have select all enabled. 11509 // TODO(amaralp): Empty contenteditable should not have select all enabled.
11504 EXPECT_TRUE(testSelectAll("<div contenteditable></div>")); 11510 EXPECT_TRUE(testSelectAll("<div contenteditable></div>"));
11505 EXPECT_TRUE(testSelectAll("<div contenteditable>nonempty</div>")); 11511 EXPECT_TRUE(testSelectAll("<div contenteditable>nonempty</div>"));
11506 } 11512 }
11507 11513
11508 } // namespace blink 11514 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698