OLD | NEW |
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "core/dom/DocumentMarkerController.h" | 42 #include "core/dom/DocumentMarkerController.h" |
43 #include "core/dom/Fullscreen.h" | 43 #include "core/dom/Fullscreen.h" |
44 #include "core/dom/NodeRenderStyle.h" | 44 #include "core/dom/NodeRenderStyle.h" |
45 #include "core/dom/Range.h" | 45 #include "core/dom/Range.h" |
46 #include "core/editing/Editor.h" | 46 #include "core/editing/Editor.h" |
47 #include "core/editing/FrameSelection.h" | 47 #include "core/editing/FrameSelection.h" |
48 #include "core/editing/SpellChecker.h" | 48 #include "core/editing/SpellChecker.h" |
49 #include "core/editing/VisiblePosition.h" | 49 #include "core/editing/VisiblePosition.h" |
50 #include "core/events/MouseEvent.h" | 50 #include "core/events/MouseEvent.h" |
51 #include "core/fetch/MemoryCache.h" | 51 #include "core/fetch/MemoryCache.h" |
| 52 #include "core/frame/FrameProtector.h" |
52 #include "core/frame/FrameView.h" | 53 #include "core/frame/FrameView.h" |
53 #include "core/frame/LocalFrame.h" | 54 #include "core/frame/LocalFrame.h" |
54 #include "core/frame/Settings.h" | 55 #include "core/frame/Settings.h" |
55 #include "core/html/HTMLDocument.h" | 56 #include "core/html/HTMLDocument.h" |
56 #include "core/html/HTMLFormElement.h" | 57 #include "core/html/HTMLFormElement.h" |
57 #include "core/loader/DocumentThreadableLoader.h" | 58 #include "core/loader/DocumentThreadableLoader.h" |
58 #include "core/loader/DocumentThreadableLoaderClient.h" | 59 #include "core/loader/DocumentThreadableLoaderClient.h" |
59 #include "core/loader/FrameLoadRequest.h" | 60 #include "core/loader/FrameLoadRequest.h" |
60 #include "core/loader/ThreadableLoader.h" | 61 #include "core/loader/ThreadableLoader.h" |
61 #include "core/page/EventHandler.h" | 62 #include "core/page/EventHandler.h" |
(...skipping 29 matching lines...) Expand all Loading... |
91 #include "public/web/WebScriptSource.h" | 92 #include "public/web/WebScriptSource.h" |
92 #include "public/web/WebSearchableFormData.h" | 93 #include "public/web/WebSearchableFormData.h" |
93 #include "public/web/WebSecurityOrigin.h" | 94 #include "public/web/WebSecurityOrigin.h" |
94 #include "public/web/WebSecurityPolicy.h" | 95 #include "public/web/WebSecurityPolicy.h" |
95 #include "public/web/WebSettings.h" | 96 #include "public/web/WebSettings.h" |
96 #include "public/web/WebSpellCheckClient.h" | 97 #include "public/web/WebSpellCheckClient.h" |
97 #include "public/web/WebTextCheckingCompletion.h" | 98 #include "public/web/WebTextCheckingCompletion.h" |
98 #include "public/web/WebTextCheckingResult.h" | 99 #include "public/web/WebTextCheckingResult.h" |
99 #include "public/web/WebViewClient.h" | 100 #include "public/web/WebViewClient.h" |
100 #include "web/WebLocalFrameImpl.h" | 101 #include "web/WebLocalFrameImpl.h" |
| 102 #include "web/WebRemoteFrameImpl.h" |
101 #include "web/WebViewImpl.h" | 103 #include "web/WebViewImpl.h" |
102 #include "web/tests/FrameTestHelpers.h" | 104 #include "web/tests/FrameTestHelpers.h" |
103 #include "wtf/Forward.h" | 105 #include "wtf/Forward.h" |
104 #include "wtf/dtoa/utils.h" | 106 #include "wtf/dtoa/utils.h" |
105 #include <gmock/gmock.h> | 107 #include <gmock/gmock.h> |
106 #include <gtest/gtest.h> | 108 #include <gtest/gtest.h> |
107 #include <map> | 109 #include <map> |
108 #include <v8.h> | 110 #include <v8.h> |
109 | 111 |
110 using namespace blink; | 112 using namespace blink; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 webViewHelper->webView()->settings()->setDefaultFontSize(12); | 186 webViewHelper->webView()->settings()->setDefaultFontSize(12); |
185 webViewHelper->webView()->resize(WebSize(640, 480)); | 187 webViewHelper->webView()->resize(WebSize(640, 480)); |
186 } | 188 } |
187 | 189 |
188 PassOwnPtr<blink::DragImage> nodeImageTestSetup(FrameTestHelpers::WebViewHel
per* webViewHelper, const std::string& testcase) | 190 PassOwnPtr<blink::DragImage> nodeImageTestSetup(FrameTestHelpers::WebViewHel
per* webViewHelper, const std::string& testcase) |
189 { | 191 { |
190 registerMockedHttpURLLoad("nodeimage.html"); | 192 registerMockedHttpURLLoad("nodeimage.html"); |
191 webViewHelper->initializeAndLoad(m_baseURL + "nodeimage.html"); | 193 webViewHelper->initializeAndLoad(m_baseURL + "nodeimage.html"); |
192 webViewHelper->webView()->resize(WebSize(640, 480)); | 194 webViewHelper->webView()->resize(WebSize(640, 480)); |
193 webViewHelper->webView()->layout(); | 195 webViewHelper->webView()->layout(); |
194 RefPtr<blink::LocalFrame> frame = toLocalFrame(webViewHelper->webViewImp
l()->page()->mainFrame()); | 196 LocalFrame* frame = toLocalFrame(webViewHelper->webViewImpl()->page()->m
ainFrame()); |
| 197 FrameProtector protect(frame); |
| 198 ASSERT(frame); |
195 blink::Element* element = frame->document()->getElementById(testcase.c_s
tr()); | 199 blink::Element* element = frame->document()->getElementById(testcase.c_s
tr()); |
196 return frame->nodeImage(*element); | 200 return frame->nodeImage(*element); |
197 } | 201 } |
198 | 202 |
199 std::string m_baseURL; | 203 std::string m_baseURL; |
200 std::string m_chromeURL; | 204 std::string m_chromeURL; |
201 }; | 205 }; |
202 | 206 |
203 class UseMockScrollbarSettings { | 207 class UseMockScrollbarSettings { |
204 public: | 208 public: |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10
24).utf8(); | 644 std::string content = webViewHelper.webView()->mainFrame()->contentAsText(10
24).utf8(); |
641 EXPECT_NE(std::string::npos, content.find("Message 1.")); | 645 EXPECT_NE(std::string::npos, content.find("Message 1.")); |
642 EXPECT_EQ(std::string::npos, content.find("Message 2.")); | 646 EXPECT_EQ(std::string::npos, content.find("Message 2.")); |
643 } | 647 } |
644 | 648 |
645 TEST_F(WebFrameTest, PostMessageThenDetach) | 649 TEST_F(WebFrameTest, PostMessageThenDetach) |
646 { | 650 { |
647 FrameTestHelpers::WebViewHelper webViewHelper; | 651 FrameTestHelpers::WebViewHelper webViewHelper; |
648 webViewHelper.initializeAndLoad("about:blank"); | 652 webViewHelper.initializeAndLoad("about:blank"); |
649 | 653 |
650 RefPtr<blink::LocalFrame> frame = toLocalFrame(webViewHelper.webViewImpl()->
page()->mainFrame()); | 654 |
651 blink::NonThrowableExceptionState exceptionState; | 655 LocalFrame* frame = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFr
ame()); |
| 656 FrameProtector protect(frame); |
| 657 NonThrowableExceptionState exceptionState; |
652 frame->domWindow()->postMessage(blink::SerializedScriptValue::create("messag
e"), 0, "*", frame->domWindow(), exceptionState); | 658 frame->domWindow()->postMessage(blink::SerializedScriptValue::create("messag
e"), 0, "*", frame->domWindow(), exceptionState); |
653 webViewHelper.reset(); | 659 webViewHelper.reset(); |
654 EXPECT_FALSE(exceptionState.hadException()); | 660 EXPECT_FALSE(exceptionState.hadException()); |
655 | 661 |
656 // Success is not crashing. | 662 // Success is not crashing. |
657 runPendingTasks(); | 663 runPendingTasks(); |
658 } | 664 } |
659 | 665 |
660 class FixedLayoutTestWebViewClient : public FrameTestHelpers::TestWebViewClient
{ | 666 class FixedLayoutTestWebViewClient : public FrameTestHelpers::TestWebViewClient
{ |
661 public: | 667 public: |
(...skipping 2765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3427 webViewHelper.webView()->resize(WebSize(640, 480)); | 3433 webViewHelper.webView()->resize(WebSize(640, 480)); |
3428 webViewHelper.webView()->layout(); | 3434 webViewHelper.webView()->layout(); |
3429 runPendingTasks(); | 3435 runPendingTasks(); |
3430 | 3436 |
3431 static const char* kFindString = "result"; | 3437 static const char* kFindString = "result"; |
3432 static const int kFindIdentifier = 12345; | 3438 static const int kFindIdentifier = 12345; |
3433 | 3439 |
3434 WebFindOptions options; | 3440 WebFindOptions options; |
3435 WebString searchText = WebString::fromUTF8(kFindString); | 3441 WebString searchText = WebString::fromUTF8(kFindString); |
3436 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->
mainFrame()); | 3442 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->
mainFrame()); |
3437 RefPtr<WebLocalFrameImpl> secondFrame = toWebLocalFrameImpl(mainFrame->trave
rseNext(false)); | 3443 RefPtrWillBeRawPtr<WebLocalFrameImpl> secondFrame = toWebLocalFrameImpl(main
Frame->traverseNext(false)); |
3438 RefPtr<blink::LocalFrame> holdSecondFrame = secondFrame->frame(); | 3444 FrameProtector holdSecondFrame(secondFrame->frame()); |
3439 | 3445 |
3440 // Detach the frame before finding. | 3446 // Detach the frame before finding. |
3441 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); | 3447 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); |
3442 | 3448 |
3443 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0))
; | 3449 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0))
; |
3444 EXPECT_FALSE(secondFrame->find(kFindIdentifier, searchText, options, false,
0)); | 3450 EXPECT_FALSE(secondFrame->find(kFindIdentifier, searchText, options, false,
0)); |
3445 | 3451 |
3446 runPendingTasks(); | 3452 runPendingTasks(); |
3447 EXPECT_FALSE(client.findResultsAreReady()); | 3453 EXPECT_FALSE(client.findResultsAreReady()); |
3448 | 3454 |
3449 mainFrame->resetMatchCount(); | 3455 mainFrame->resetMatchCount(); |
3450 | 3456 |
3451 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) | 3457 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
3452 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); | 3458 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); |
3453 | 3459 |
3454 runPendingTasks(); | 3460 runPendingTasks(); |
3455 EXPECT_TRUE(client.findResultsAreReady()); | 3461 EXPECT_TRUE(client.findResultsAreReady()); |
3456 | |
3457 holdSecondFrame.release(); | |
3458 } | 3462 } |
3459 | 3463 |
3460 TEST_F(WebFrameTest, FindDetachFrameBeforeScopeStrings) | 3464 TEST_F(WebFrameTest, FindDetachFrameBeforeScopeStrings) |
3461 { | 3465 { |
3462 registerMockedHttpURLLoad("find_in_page.html"); | 3466 registerMockedHttpURLLoad("find_in_page.html"); |
3463 registerMockedHttpURLLoad("find_in_page_frame.html"); | 3467 registerMockedHttpURLLoad("find_in_page_frame.html"); |
3464 | 3468 |
3465 FindUpdateWebFrameClient client; | 3469 FindUpdateWebFrameClient client; |
3466 FrameTestHelpers::WebViewHelper webViewHelper; | 3470 FrameTestHelpers::WebViewHelper webViewHelper; |
3467 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie
nt); | 3471 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie
nt); |
3468 webViewHelper.webView()->resize(WebSize(640, 480)); | 3472 webViewHelper.webView()->resize(WebSize(640, 480)); |
3469 webViewHelper.webView()->layout(); | 3473 webViewHelper.webView()->layout(); |
3470 runPendingTasks(); | 3474 runPendingTasks(); |
3471 | 3475 |
3472 static const char* kFindString = "result"; | 3476 static const char* kFindString = "result"; |
3473 static const int kFindIdentifier = 12345; | 3477 static const int kFindIdentifier = 12345; |
3474 | 3478 |
3475 WebFindOptions options; | 3479 WebFindOptions options; |
3476 WebString searchText = WebString::fromUTF8(kFindString); | 3480 WebString searchText = WebString::fromUTF8(kFindString); |
3477 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->
mainFrame()); | 3481 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->
mainFrame()); |
3478 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext
(false)); | 3482 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext
(false)); |
3479 RefPtr<blink::LocalFrame> holdSecondFrame = secondFrame->frame(); | 3483 FrameProtector holdSecondFrame(secondFrame->frame()); |
3480 | 3484 |
3481 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) | 3485 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
3482 EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0))
; | 3486 EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0))
; |
3483 | 3487 |
3484 runPendingTasks(); | 3488 runPendingTasks(); |
3485 EXPECT_FALSE(client.findResultsAreReady()); | 3489 EXPECT_FALSE(client.findResultsAreReady()); |
3486 | 3490 |
3487 // Detach the frame between finding and scoping. | 3491 // Detach the frame between finding and scoping. |
3488 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); | 3492 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); |
3489 | 3493 |
3490 mainFrame->resetMatchCount(); | 3494 mainFrame->resetMatchCount(); |
3491 | 3495 |
3492 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) | 3496 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
3493 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); | 3497 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); |
3494 | 3498 |
3495 runPendingTasks(); | 3499 runPendingTasks(); |
3496 EXPECT_TRUE(client.findResultsAreReady()); | 3500 EXPECT_TRUE(client.findResultsAreReady()); |
3497 | |
3498 holdSecondFrame.release(); | |
3499 } | 3501 } |
3500 | 3502 |
3501 TEST_F(WebFrameTest, FindDetachFrameWhileScopingStrings) | 3503 TEST_F(WebFrameTest, FindDetachFrameWhileScopingStrings) |
3502 { | 3504 { |
3503 registerMockedHttpURLLoad("find_in_page.html"); | 3505 registerMockedHttpURLLoad("find_in_page.html"); |
3504 registerMockedHttpURLLoad("find_in_page_frame.html"); | 3506 registerMockedHttpURLLoad("find_in_page_frame.html"); |
3505 | 3507 |
3506 FindUpdateWebFrameClient client; | 3508 FindUpdateWebFrameClient client; |
3507 FrameTestHelpers::WebViewHelper webViewHelper; | 3509 FrameTestHelpers::WebViewHelper webViewHelper; |
3508 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie
nt); | 3510 webViewHelper.initializeAndLoad(m_baseURL + "find_in_page.html", true, &clie
nt); |
3509 webViewHelper.webView()->resize(WebSize(640, 480)); | 3511 webViewHelper.webView()->resize(WebSize(640, 480)); |
3510 webViewHelper.webView()->layout(); | 3512 webViewHelper.webView()->layout(); |
3511 runPendingTasks(); | 3513 runPendingTasks(); |
3512 | 3514 |
3513 static const char* kFindString = "result"; | 3515 static const char* kFindString = "result"; |
3514 static const int kFindIdentifier = 12345; | 3516 static const int kFindIdentifier = 12345; |
3515 | 3517 |
3516 WebFindOptions options; | 3518 WebFindOptions options; |
3517 WebString searchText = WebString::fromUTF8(kFindString); | 3519 WebString searchText = WebString::fromUTF8(kFindString); |
3518 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->
mainFrame()); | 3520 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()->
mainFrame()); |
3519 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext
(false)); | 3521 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext
(false)); |
3520 RefPtr<blink::LocalFrame> holdSecondFrame = secondFrame->frame(); | 3522 FrameProtector holdSecondFrame(secondFrame->frame()); |
3521 | 3523 |
3522 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) | 3524 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
3523 EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0))
; | 3525 EXPECT_TRUE(frame->find(kFindIdentifier, searchText, options, false, 0))
; |
3524 | 3526 |
3525 runPendingTasks(); | 3527 runPendingTasks(); |
3526 EXPECT_FALSE(client.findResultsAreReady()); | 3528 EXPECT_FALSE(client.findResultsAreReady()); |
3527 | 3529 |
3528 mainFrame->resetMatchCount(); | 3530 mainFrame->resetMatchCount(); |
3529 | 3531 |
3530 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) | 3532 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) |
3531 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); | 3533 frame->scopeStringMatches(kFindIdentifier, searchText, options, true); |
3532 | 3534 |
3533 // The first scopeStringMatches will have reset the state. Detach before it
actually scopes. | 3535 // The first scopeStringMatches will have reset the state. Detach before it
actually scopes. |
3534 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); | 3536 EXPECT_TRUE(mainFrame->document().getElementById("frame").remove()); |
3535 | 3537 |
3536 runPendingTasks(); | 3538 runPendingTasks(); |
3537 EXPECT_TRUE(client.findResultsAreReady()); | 3539 EXPECT_TRUE(client.findResultsAreReady()); |
3538 | |
3539 holdSecondFrame.release(); | |
3540 } | 3540 } |
3541 | 3541 |
3542 TEST_F(WebFrameTest, ResetMatchCount) | 3542 TEST_F(WebFrameTest, ResetMatchCount) |
3543 { | 3543 { |
3544 registerMockedHttpURLLoad("find_in_generated_frame.html"); | 3544 registerMockedHttpURLLoad("find_in_generated_frame.html"); |
3545 | 3545 |
3546 FindUpdateWebFrameClient client; | 3546 FindUpdateWebFrameClient client; |
3547 FrameTestHelpers::WebViewHelper webViewHelper; | 3547 FrameTestHelpers::WebViewHelper webViewHelper; |
3548 webViewHelper.initializeAndLoad(m_baseURL + "find_in_generated_frame.html",
true, &client); | 3548 webViewHelper.initializeAndLoad(m_baseURL + "find_in_generated_frame.html",
true, &client); |
3549 webViewHelper.webView()->resize(WebSize(640, 480)); | 3549 webViewHelper.webView()->resize(WebSize(640, 480)); |
(...skipping 1565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5115 registerMockedHttpURLLoad("hello_world.html"); | 5115 registerMockedHttpURLLoad("hello_world.html"); |
5116 TestNewWindowWebViewClient webViewClient; | 5116 TestNewWindowWebViewClient webViewClient; |
5117 TestNewWindowWebFrameClient webFrameClient; | 5117 TestNewWindowWebFrameClient webFrameClient; |
5118 FrameTestHelpers::WebViewHelper webViewHelper; | 5118 FrameTestHelpers::WebViewHelper webViewHelper; |
5119 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, &webFra
meClient, &webViewClient); | 5119 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, &webFra
meClient, &webViewClient); |
5120 | 5120 |
5121 blink::Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()
->mainFrame())->document(); | 5121 blink::Document* document = toLocalFrame(webViewHelper.webViewImpl()->page()
->mainFrame())->document(); |
5122 blink::KURL destination = toKURL(m_baseURL + "hello_world.html"); | 5122 blink::KURL destination = toKURL(m_baseURL + "hello_world.html"); |
5123 | 5123 |
5124 // ctrl+click event | 5124 // ctrl+click event |
5125 RefPtrWillBeRawPtr<blink::Event> event = blink::MouseEvent::create(blink::Ev
entTypeNames::click, false, false, | 5125 RefPtrWillBeRawPtr<Event> event = blink::MouseEvent::create(blink::EventType
Names::click, false, false, |
5126 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, true, false, false, false, 0
, nullptr, nullptr); | 5126 document->domWindow(), 0, 0, 0, 0, 0, 0, 0, true, false, false, false, 0
, nullptr, nullptr); |
5127 blink::FrameLoadRequest frameRequest(document, blink::ResourceRequest(destin
ation)); | 5127 blink::FrameLoadRequest frameRequest(document, blink::ResourceRequest(destin
ation)); |
5128 frameRequest.setTriggeringEvent(event); | 5128 frameRequest.setTriggeringEvent(event); |
5129 blink::UserGestureIndicator gesture(blink::DefinitelyProcessingUserGesture); | 5129 blink::UserGestureIndicator gesture(blink::DefinitelyProcessingUserGesture); |
5130 toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->loader().loa
d(frameRequest); | 5130 toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->loader().loa
d(frameRequest); |
5131 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF
rame()); | 5131 FrameTestHelpers::pumpPendingRequestsDoNotUse(webViewHelper.webView()->mainF
rame()); |
5132 | 5132 |
5133 // decidePolicyForNavigation should be called both for the original request
and the ctrl+click. | 5133 // decidePolicyForNavigation should be called both for the original request
and the ctrl+click. |
5134 EXPECT_EQ(2, webFrameClient.decidePolicyCallCount()); | 5134 EXPECT_EQ(2, webFrameClient.decidePolicyCallCount()); |
5135 } | 5135 } |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5283 registerMockedHttpURLLoad("iframe_reload.html"); | 5283 registerMockedHttpURLLoad("iframe_reload.html"); |
5284 registerMockedHttpURLLoad("visible_iframe.html"); | 5284 registerMockedHttpURLLoad("visible_iframe.html"); |
5285 TestCachePolicyWebFrameClient mainClient(0); | 5285 TestCachePolicyWebFrameClient mainClient(0); |
5286 TestCachePolicyWebFrameClient childClient(&mainClient); | 5286 TestCachePolicyWebFrameClient childClient(&mainClient); |
5287 mainClient.setChildWebFrameClient(&childClient); | 5287 mainClient.setChildWebFrameClient(&childClient); |
5288 | 5288 |
5289 FrameTestHelpers::WebViewHelper webViewHelper; | 5289 FrameTestHelpers::WebViewHelper webViewHelper; |
5290 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, &mai
nClient); | 5290 webViewHelper.initializeAndLoad(m_baseURL + "iframe_reload.html", true, &mai
nClient); |
5291 | 5291 |
5292 WebLocalFrameImpl* mainFrame = webViewHelper.webViewImpl()->mainFrameImpl(); | 5292 WebLocalFrameImpl* mainFrame = webViewHelper.webViewImpl()->mainFrameImpl(); |
5293 RefPtr<WebLocalFrameImpl> childFrame = toWebLocalFrameImpl(mainFrame->firstC
hild()); | 5293 RefPtrWillBeRawPtr<WebLocalFrameImpl> childFrame = toWebLocalFrameImpl(mainF
rame->firstChild()); |
5294 ASSERT_EQ(childFrame->client(), &childClient); | 5294 ASSERT_EQ(childFrame->client(), &childClient); |
5295 EXPECT_EQ(mainClient.childFrameCreationCount(), 1); | 5295 EXPECT_EQ(mainClient.childFrameCreationCount(), 1); |
5296 EXPECT_EQ(childClient.willSendRequestCallCount(), 1); | 5296 EXPECT_EQ(childClient.willSendRequestCallCount(), 1); |
5297 EXPECT_EQ(childClient.cachePolicy(), WebURLRequest::UseProtocolCachePolicy); | 5297 EXPECT_EQ(childClient.cachePolicy(), WebURLRequest::UseProtocolCachePolicy); |
5298 | 5298 |
5299 FrameTestHelpers::reloadFrame(mainFrame); | 5299 FrameTestHelpers::reloadFrame(mainFrame); |
5300 | 5300 |
5301 // A new WebFrame should have been created, but the child WebFrameClient sho
uld be reused. | 5301 // A new WebFrame should have been created, but the child WebFrameClient sho
uld be reused. |
5302 ASSERT_NE(childFrame, toWebLocalFrameImpl(mainFrame->firstChild())); | 5302 ASSERT_NE(childFrame, toWebLocalFrameImpl(mainFrame->firstChild())); |
5303 ASSERT_EQ(toWebLocalFrameImpl(mainFrame->firstChild())->client(), &childClie
nt); | 5303 ASSERT_EQ(toWebLocalFrameImpl(mainFrame->firstChild())->client(), &childClie
nt); |
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5977 | 5977 |
5978 EXPECT_EQ(newChild, parent->firstChild()); | 5978 EXPECT_EQ(newChild, parent->firstChild()); |
5979 EXPECT_EQ(newChild->parent(), parent); | 5979 EXPECT_EQ(newChild->parent(), parent); |
5980 EXPECT_EQ(newChild, parent->lastChild()->previousSibling()->previousSibling(
)); | 5980 EXPECT_EQ(newChild, parent->lastChild()->previousSibling()->previousSibling(
)); |
5981 EXPECT_EQ(newChild->nextSibling(), parent->lastChild()->previousSibling()); | 5981 EXPECT_EQ(newChild->nextSibling(), parent->lastChild()->previousSibling()); |
5982 } | 5982 } |
5983 | 5983 |
5984 TEST_F(WebFrameSwapTest, SwapFirstChild) | 5984 TEST_F(WebFrameSwapTest, SwapFirstChild) |
5985 { | 5985 { |
5986 WebFrame* remoteFrame = WebRemoteFrame::create(0); | 5986 WebFrame* remoteFrame = WebRemoteFrame::create(0); |
| 5987 // FIXME: Oilpan: add a guard/protector-like helper type that tidies this up
. |
| 5988 RefPtrWillBePersistent<WebRemoteFrameImpl> protect(toWebRemoteFrameImpl(remo
teFrame)); |
5987 swapAndVerifyFirstChildConsistency("local->remote", mainFrame(), remoteFrame
); | 5989 swapAndVerifyFirstChildConsistency("local->remote", mainFrame(), remoteFrame
); |
5988 | 5990 |
5989 FrameTestHelpers::TestWebFrameClient client; | 5991 FrameTestHelpers::TestWebFrameClient client; |
5990 WebFrame* localFrame = WebLocalFrame::create(&client); | 5992 WebFrame* localFrame = WebLocalFrame::create(&client); |
5991 swapAndVerifyFirstChildConsistency("remote->local", mainFrame(), localFrame)
; | 5993 swapAndVerifyFirstChildConsistency("remote->local", mainFrame(), localFrame)
; |
5992 | 5994 |
5993 // FIXME: This almost certainly fires more load events on the iframe element | 5995 // FIXME: This almost certainly fires more load events on the iframe element |
5994 // than it should. | 5996 // than it should. |
5995 // Finally, make sure an embedder triggered load in the local frame swapped | 5997 // Finally, make sure an embedder triggered load in the local frame swapped |
5996 // back in works. | 5998 // back in works. |
(...skipping 17 matching lines...) Expand all Loading... |
6014 EXPECT_EQ(newChild->parent(), parent); | 6016 EXPECT_EQ(newChild->parent(), parent); |
6015 EXPECT_EQ(newChild, parent->firstChild()->nextSibling()); | 6017 EXPECT_EQ(newChild, parent->firstChild()->nextSibling()); |
6016 EXPECT_EQ(newChild->previousSibling(), parent->firstChild()); | 6018 EXPECT_EQ(newChild->previousSibling(), parent->firstChild()); |
6017 EXPECT_EQ(newChild, parent->lastChild()->previousSibling()); | 6019 EXPECT_EQ(newChild, parent->lastChild()->previousSibling()); |
6018 EXPECT_EQ(newChild->nextSibling(), parent->lastChild()); | 6020 EXPECT_EQ(newChild->nextSibling(), parent->lastChild()); |
6019 } | 6021 } |
6020 | 6022 |
6021 TEST_F(WebFrameSwapTest, SwapMiddleChild) | 6023 TEST_F(WebFrameSwapTest, SwapMiddleChild) |
6022 { | 6024 { |
6023 WebFrame* remoteFrame = WebRemoteFrame::create(0); | 6025 WebFrame* remoteFrame = WebRemoteFrame::create(0); |
| 6026 RefPtrWillBePersistent<WebRemoteFrameImpl> protect(toWebRemoteFrameImpl(remo
teFrame)); |
6024 swapAndVerifyMiddleChildConsistency("local->remote", mainFrame(), remoteFram
e); | 6027 swapAndVerifyMiddleChildConsistency("local->remote", mainFrame(), remoteFram
e); |
6025 | 6028 |
6026 FrameTestHelpers::TestWebFrameClient client; | 6029 FrameTestHelpers::TestWebFrameClient client; |
6027 WebFrame* localFrame = WebLocalFrame::create(&client); | 6030 WebFrame* localFrame = WebLocalFrame::create(&client); |
6028 swapAndVerifyMiddleChildConsistency("remote->local", mainFrame(), localFrame
); | 6031 swapAndVerifyMiddleChildConsistency("remote->local", mainFrame(), localFrame
); |
6029 | 6032 |
6030 // FIXME: This almost certainly fires more load events on the iframe element | 6033 // FIXME: This almost certainly fires more load events on the iframe element |
6031 // than it should. | 6034 // than it should. |
6032 // Finally, make sure an embedder triggered load in the local frame swapped | 6035 // Finally, make sure an embedder triggered load in the local frame swapped |
6033 // back in works. | 6036 // back in works. |
(...skipping 14 matching lines...) Expand all Loading... |
6048 | 6051 |
6049 EXPECT_EQ(newChild, parent->lastChild()); | 6052 EXPECT_EQ(newChild, parent->lastChild()); |
6050 EXPECT_EQ(newChild->parent(), parent); | 6053 EXPECT_EQ(newChild->parent(), parent); |
6051 EXPECT_EQ(newChild, parent->firstChild()->nextSibling()->nextSibling()); | 6054 EXPECT_EQ(newChild, parent->firstChild()->nextSibling()->nextSibling()); |
6052 EXPECT_EQ(newChild->previousSibling(), parent->firstChild()->nextSibling()); | 6055 EXPECT_EQ(newChild->previousSibling(), parent->firstChild()->nextSibling()); |
6053 } | 6056 } |
6054 | 6057 |
6055 TEST_F(WebFrameSwapTest, SwapLastChild) | 6058 TEST_F(WebFrameSwapTest, SwapLastChild) |
6056 { | 6059 { |
6057 WebFrame* remoteFrame = WebRemoteFrame::create(0); | 6060 WebFrame* remoteFrame = WebRemoteFrame::create(0); |
| 6061 RefPtrWillBePersistent<WebRemoteFrameImpl> protect(toWebRemoteFrameImpl(remo
teFrame)); |
6058 swapAndVerifyLastChildConsistency("local->remote", mainFrame(), remoteFrame)
; | 6062 swapAndVerifyLastChildConsistency("local->remote", mainFrame(), remoteFrame)
; |
6059 | 6063 |
6060 FrameTestHelpers::TestWebFrameClient client; | 6064 FrameTestHelpers::TestWebFrameClient client; |
6061 WebFrame* localFrame = WebLocalFrame::create(&client); | 6065 WebFrame* localFrame = WebLocalFrame::create(&client); |
6062 swapAndVerifyLastChildConsistency("remote->local", mainFrame(), localFrame); | 6066 swapAndVerifyLastChildConsistency("remote->local", mainFrame(), localFrame); |
6063 | 6067 |
6064 // FIXME: This almost certainly fires more load events on the iframe element | 6068 // FIXME: This almost certainly fires more load events on the iframe element |
6065 // than it should. | 6069 // than it should. |
6066 // Finally, make sure an embedder triggered load in the local frame swapped | 6070 // Finally, make sure an embedder triggered load in the local frame swapped |
6067 // back in works. | 6071 // back in works. |
(...skipping 25 matching lines...) Expand all Loading... |
6093 { | 6097 { |
6094 FrameTestHelpers::WebViewHelper webViewHelper; | 6098 FrameTestHelpers::WebViewHelper webViewHelper; |
6095 webViewHelper.initializeAndLoad("about:blank"); | 6099 webViewHelper.initializeAndLoad("about:blank"); |
6096 | 6100 |
6097 blink::SchemeRegistry::registerURLSchemeAsDisplayIsolated("chrome"); | 6101 blink::SchemeRegistry::registerURLSchemeAsDisplayIsolated("chrome"); |
6098 | 6102 |
6099 // Cross-origin request. | 6103 // Cross-origin request. |
6100 blink::KURL resourceUrl(blink::ParsedURLString, "chrome://test.pdf"); | 6104 blink::KURL resourceUrl(blink::ParsedURLString, "chrome://test.pdf"); |
6101 registerMockedChromeURLLoad("test.pdf"); | 6105 registerMockedChromeURLLoad("test.pdf"); |
6102 | 6106 |
6103 RefPtr<blink::LocalFrame> frame = toLocalFrame(webViewHelper.webViewImpl()->
page()->mainFrame()); | 6107 LocalFrame* frame = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFr
ame()); |
| 6108 FrameProtector protect(frame); |
6104 | 6109 |
6105 MockDocumentThreadableLoaderClient client; | 6110 MockDocumentThreadableLoaderClient client; |
6106 blink::ThreadableLoaderOptions options; | 6111 blink::ThreadableLoaderOptions options; |
6107 | 6112 |
6108 // First try to load the request with regular access. Should fail. | 6113 // First try to load the request with regular access. Should fail. |
6109 options.crossOriginRequestPolicy = blink::UseAccessControl; | 6114 options.crossOriginRequestPolicy = blink::UseAccessControl; |
6110 blink::ResourceLoaderOptions resourceLoaderOptions; | 6115 blink::ResourceLoaderOptions resourceLoaderOptions; |
6111 blink::DocumentThreadableLoader::loadResourceSynchronously( | 6116 blink::DocumentThreadableLoader::loadResourceSynchronously( |
6112 *frame->document(), blink::ResourceRequest(resourceUrl), client, options
, resourceLoaderOptions); | 6117 *frame->document(), blink::ResourceRequest(resourceUrl), client, options
, resourceLoaderOptions); |
6113 EXPECT_TRUE(client.failed()); | 6118 EXPECT_TRUE(client.failed()); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6179 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); | 6184 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); |
6180 | 6185 |
6181 // Neither should a page reload. | 6186 // Neither should a page reload. |
6182 localFrame->reload(); | 6187 localFrame->reload(); |
6183 EXPECT_EQ(4u, frameClient.provisionalLoadCount()); | 6188 EXPECT_EQ(4u, frameClient.provisionalLoadCount()); |
6184 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition()); | 6189 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition()); |
6185 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); | 6190 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); |
6186 } | 6191 } |
6187 | 6192 |
6188 } // namespace | 6193 } // namespace |
OLD | NEW |