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

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

Issue 1140153006: Remove Navigation Transitions from Blink. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Removed layout tests. Created 5 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « Source/web/tests/WebDocumentTest.cpp ('k') | public/blink_resources.grd » ('j') | 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 4840 matching lines...) Expand 10 before | Expand all | Expand 10 after
4851 TEST_F(WebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSelection) 4851 TEST_F(WebFrameTest, MoveCaretSelectionTowardsWindowPointWithNoSelection)
4852 { 4852 {
4853 FrameTestHelpers::WebViewHelper webViewHelper; 4853 FrameTestHelpers::WebViewHelper webViewHelper;
4854 webViewHelper.initializeAndLoad("about:blank", true); 4854 webViewHelper.initializeAndLoad("about:blank", true);
4855 WebFrame* frame = webViewHelper.webView()->mainFrame(); 4855 WebFrame* frame = webViewHelper.webView()->mainFrame();
4856 4856
4857 // This test passes if this doesn't crash. 4857 // This test passes if this doesn't crash.
4858 frame->moveCaretSelection(WebPoint(0, 0)); 4858 frame->moveCaretSelection(WebPoint(0, 0));
4859 } 4859 }
4860 4860
4861 TEST_F(WebFrameTest, NavigateToSandboxedMarkup)
4862 {
4863 FrameTestHelpers::TestWebFrameClient webFrameClient;
4864 FrameTestHelpers::WebViewHelper webViewHelper;
4865 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad("about:blank", tr ue, &webFrameClient);
4866 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewHelper.webView()->main Frame());
4867
4868 frame->document().setIsTransitionDocument(true);
4869
4870 std::string markup("<div id='foo'></div><script>document.getElementById('foo ').setAttribute('dir', 'rtl')</script>");
4871 frame->navigateToSandboxedMarkup(WebData(markup.data(), markup.length()));
4872
4873 webFrameClient.waitForLoadToComplete();
4874
4875 WebDocument document = webViewImpl->mainFrame()->document();
4876 WebElement transitionElement = document.getElementById("foo");
4877 // Check that the markup got navigated to successfully.
4878 EXPECT_FALSE(transitionElement.isNull());
4879
4880 // Check that the inline script was not executed.
4881 EXPECT_FALSE(transitionElement.hasAttribute("dir"));
4882 }
4883
4884 class SpellCheckClient : public WebSpellCheckClient { 4861 class SpellCheckClient : public WebSpellCheckClient {
4885 public: 4862 public:
4886 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { } 4863 explicit SpellCheckClient(uint32_t hash = 0) : m_numberOfTimesChecked(0), m_ hash(hash) { }
4887 virtual ~SpellCheckClient() { } 4864 virtual ~SpellCheckClient() { }
4888 virtual void requestCheckingOfText(const WebString&, const WebVector<uint32_ t>&, const WebVector<unsigned>&, WebTextCheckingCompletion* completion) override 4865 virtual void requestCheckingOfText(const WebString&, const WebVector<uint32_ t>&, const WebVector<unsigned>&, WebTextCheckingCompletion* completion) override
4889 { 4866 {
4890 ++m_numberOfTimesChecked; 4867 ++m_numberOfTimesChecked;
4891 Vector<WebTextCheckingResult> results; 4868 Vector<WebTextCheckingResult> results;
4892 const int misspellingStartOffset = 1; 4869 const int misspellingStartOffset = 1;
4893 const int misspellingLength = 8; 4870 const int misspellingLength = 8;
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after
5892 } 5869 }
5893 5870
5894 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient { 5871 class TestHistoryWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
5895 public: 5872 public:
5896 TestHistoryWebFrameClient() 5873 TestHistoryWebFrameClient()
5897 { 5874 {
5898 m_replacesCurrentHistoryItem = false; 5875 m_replacesCurrentHistoryItem = false;
5899 m_frame = nullptr; 5876 m_frame = nullptr;
5900 } 5877 }
5901 5878
5902 void didStartProvisionalLoad(WebLocalFrame* frame, bool isTransitionNavigati on, double) 5879 void didStartProvisionalLoad(WebLocalFrame* frame, double)
5903 { 5880 {
5904 WebDataSource* ds = frame->provisionalDataSource(); 5881 WebDataSource* ds = frame->provisionalDataSource();
5905 m_replacesCurrentHistoryItem = ds->replacesCurrentHistoryItem(); 5882 m_replacesCurrentHistoryItem = ds->replacesCurrentHistoryItem();
5906 m_frame = frame; 5883 m_frame = frame;
5907 } 5884 }
5908 5885
5909 bool replacesCurrentHistoryItem() { return m_replacesCurrentHistoryItem; } 5886 bool replacesCurrentHistoryItem() { return m_replacesCurrentHistoryItem; }
5910 WebFrame* frame() { return m_frame; } 5887 WebFrame* frame() { return m_frame; }
5911 5888
5912 private: 5889 private:
(...skipping 1349 matching lines...) Expand 10 before | Expand all | Expand 10 after
7262 EXPECT_TRUE(client.failed()); 7239 EXPECT_TRUE(client.failed());
7263 7240
7264 client.reset(); 7241 client.reset();
7265 // Try to load the request with cross origin access. Should succeed. 7242 // Try to load the request with cross origin access. Should succeed.
7266 options.crossOriginRequestPolicy = AllowCrossOriginRequests; 7243 options.crossOriginRequestPolicy = AllowCrossOriginRequests;
7267 DocumentThreadableLoader::loadResourceSynchronously( 7244 DocumentThreadableLoader::loadResourceSynchronously(
7268 *frame->document(), ResourceRequest(resourceUrl), client, options, resou rceLoaderOptions); 7245 *frame->document(), ResourceRequest(resourceUrl), client, options, resou rceLoaderOptions);
7269 EXPECT_FALSE(client.failed()); 7246 EXPECT_FALSE(client.failed());
7270 } 7247 }
7271 7248
7272 class NavigationTransitionCallbackWebFrameClient : public FrameTestHelpers::Test WebFrameClient {
7273 public:
7274 NavigationTransitionCallbackWebFrameClient()
7275 : m_navigationalDataReceivedCount(0)
7276 , m_provisionalLoadCount(0)
7277 , m_wasLastProvisionalLoadATransition(false) { }
7278
7279 virtual void addNavigationTransitionData(const WebTransitionElementData& dat a) override
7280 {
7281 m_navigationalDataReceivedCount++;
7282 }
7283
7284 virtual void didStartProvisionalLoad(WebLocalFrame* localFrame, bool isTrans itionNavigation, double) override
7285 {
7286 m_provisionalLoadCount++;
7287 m_wasLastProvisionalLoadATransition = isTransitionNavigation;
7288 }
7289
7290 unsigned navigationalDataReceivedCount() const { return m_navigationalDataRe ceivedCount; }
7291 unsigned provisionalLoadCount() const { return m_provisionalLoadCount; }
7292 bool wasLastProvisionalLoadATransition() const { return m_wasLastProvisional LoadATransition; }
7293
7294 private:
7295 unsigned m_navigationalDataReceivedCount;
7296 unsigned m_provisionalLoadCount;
7297 bool m_wasLastProvisionalLoadATransition;
7298 };
7299
7300 TEST_F(WebFrameTest, NavigationTransitionCallbacks)
7301 {
7302 RuntimeEnabledFeatures::setNavigationTransitionsEnabled(true);
7303 FrameTestHelpers::WebViewHelper viewHelper;
7304 NavigationTransitionCallbackWebFrameClient frameClient;
7305 WebLocalFrame* localFrame = viewHelper.initialize(true, &frameClient)->mainF rame()->toWebLocalFrame();
7306
7307 const char* transitionHTMLString =
7308 "<!DOCTYPE html>"
7309 "<meta name='transition-elements' content='#foo;*'>"
7310 "<div id='foo'>";
7311
7312 // Initial document load should not be a transition.
7313 FrameTestHelpers::loadHTMLString(localFrame, transitionHTMLString, toKURL("h ttp://internal.test"));
7314 EXPECT_EQ(1u, frameClient.provisionalLoadCount());
7315 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition());
7316 EXPECT_EQ(0u, frameClient.navigationalDataReceivedCount());
7317
7318 // Going from internal.test containing transition elements to about:blank, s hould be a transition.
7319 FrameTestHelpers::loadHTMLString(localFrame, transitionHTMLString, toKURL("a bout:blank"));
7320 EXPECT_EQ(2u, frameClient.provisionalLoadCount());
7321 EXPECT_TRUE(frameClient.wasLastProvisionalLoadATransition());
7322 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount());
7323
7324 // Navigating to the URL of the current page shouldn't be a transition.
7325 FrameTestHelpers::loadHTMLString(localFrame, transitionHTMLString, toKURL("a bout:blank"));
7326 EXPECT_EQ(3u, frameClient.provisionalLoadCount());
7327 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition());
7328 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount());
7329
7330 // Neither should a page reload.
7331 localFrame->reload();
7332 EXPECT_EQ(4u, frameClient.provisionalLoadCount());
7333 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition());
7334 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount());
7335 }
7336
7337 TEST_F(WebFrameTest, DetachRemoteFrame) 7249 TEST_F(WebFrameTest, DetachRemoteFrame)
7338 { 7250 {
7339 FrameTestHelpers::TestWebViewClient viewClient; 7251 FrameTestHelpers::TestWebViewClient viewClient;
7340 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7252 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7341 WebView* view = WebView::create(&viewClient); 7253 WebView* view = WebView::create(&viewClient);
7342 view->setMainFrame(remoteClient.frame()); 7254 view->setMainFrame(remoteClient.frame());
7343 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient; 7255 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient;
7344 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild("", WebSandboxFlags::None, &childFrameClient); 7256 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild("", WebSandboxFlags::None, &childFrameClient);
7345 childFrame->detach(); 7257 childFrame->detach();
7346 view->close(); 7258 view->close();
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
7423 7335
7424 EXPECT_EQ(parent, firstFrame->parent()); 7336 EXPECT_EQ(parent, firstFrame->parent());
7425 EXPECT_EQ(parent, secondFrame->parent()); 7337 EXPECT_EQ(parent, secondFrame->parent());
7426 EXPECT_EQ(parent, thirdFrame->parent()); 7338 EXPECT_EQ(parent, thirdFrame->parent());
7427 EXPECT_EQ(parent, fourthFrame->parent()); 7339 EXPECT_EQ(parent, fourthFrame->parent());
7428 7340
7429 view->close(); 7341 view->close();
7430 } 7342 }
7431 7343
7432 } // namespace blink 7344 } // namespace blink
OLDNEW
« no previous file with comments | « Source/web/tests/WebDocumentTest.cpp ('k') | public/blink_resources.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698