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

Side by Side Diff: chrome/browser/extensions/extension_messages_apitest.cc

Issue 2208483002: Fix extension bindings injection for iframes (reland) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add fix and test for bug 630928, and logging to existing test Created 4 years, 4 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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 GURL::Replacements replacements; 340 GURL::Replacements replacements;
341 replacements.SetHostStr(host); 341 replacements.SetHostStr(host);
342 replacements.SetPortStr(port); 342 replacements.SetPortStr(port);
343 return embedded_test_server()->GetURL(path).ReplaceComponents(replacements); 343 return embedded_test_server()->GetURL(path).ReplaceComponents(replacements);
344 } 344 }
345 345
346 GURL chromium_org_url() { 346 GURL chromium_org_url() {
347 return GetURLForPath("www.chromium.org", "/chromium.org.html"); 347 return GetURLForPath("www.chromium.org", "/chromium.org.html");
348 } 348 }
349 349
350 GURL popup_opener_url() {
351 return GetURLForPath("www.chromium.org", "/popup_opener.html");
352 }
353
350 GURL google_com_url() { 354 GURL google_com_url() {
351 return GetURLForPath("www.google.com", "/google.com.html"); 355 return GetURLForPath("www.google.com", "/google.com.html");
352 } 356 }
353 357
354 scoped_refptr<const Extension> LoadChromiumConnectableExtension() { 358 scoped_refptr<const Extension> LoadChromiumConnectableExtension() {
355 scoped_refptr<const Extension> extension = 359 scoped_refptr<const Extension> extension =
356 LoadExtensionIntoDir(&web_connectable_dir_, 360 LoadExtensionIntoDir(&web_connectable_dir_,
357 base::StringPrintf( 361 base::StringPrintf(
358 "{" 362 "{"
359 " \"name\": \"chromium_connectable\"," 363 " \"name\": \"chromium_connectable\","
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 EXPECT_EQ(OK, CanConnectAndSendMessagesToMainFrame(extension.get())); 1015 EXPECT_EQ(OK, CanConnectAndSendMessagesToMainFrame(extension.get()));
1012 EXPECT_FALSE(AreAnyNonWebApisDefinedForMainFrame()); 1016 EXPECT_FALSE(AreAnyNonWebApisDefinedForMainFrame());
1013 1017
1014 ASSERT_TRUE(AppendIframe(google_com_url())); 1018 ASSERT_TRUE(AppendIframe(google_com_url()));
1015 1019
1016 EXPECT_EQ(NAMESPACE_NOT_DEFINED, 1020 EXPECT_EQ(NAMESPACE_NOT_DEFINED,
1017 CanConnectAndSendMessagesToIFrame(extension.get())); 1021 CanConnectAndSendMessagesToIFrame(extension.get()));
1018 EXPECT_FALSE(AreAnyNonWebApisDefinedForIFrame()); 1022 EXPECT_FALSE(AreAnyNonWebApisDefinedForIFrame());
1019 } 1023 }
1020 1024
1025 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, FromPopup) {
1026 base::CommandLine::ForCurrentProcess()->AppendSwitch(
1027 switches::kDisablePopupBlocking);
1028
1029 InitializeTestServer();
1030 scoped_refptr<const Extension> extension = LoadChromiumConnectableExtension();
1031
1032 // This will let us wait for the chromium.org.html page to load in a popup.
1033 ui_test_utils::UrlLoadObserver url_observer(
1034 chromium_org_url(), content::NotificationService::AllSources());
1035
1036 // The page at popup_opener_url() should open chromium_org_url() as a popup.
1037 ui_test_utils::NavigateToURL(browser(), popup_opener_url());
1038 url_observer.Wait();
1039
1040 content::WebContents* popup_contents = nullptr;
1041 for (int i = 0; i < browser()->tab_strip_model()->count(); i++) {
Devlin 2016/08/03 16:16:49 This is a shame, because UrlLoadObserver could alr
asargent_no_longer_on_chrome 2016/08/04 05:47:18 Left a TODO, to try and get this CL in faster.
1042 content::WebContents* contents =
1043 browser()->tab_strip_model()->GetWebContentsAt(i);
1044 if (contents->GetLastCommittedURL() == chromium_org_url()) {
1045 popup_contents = contents;
1046 break;
1047 }
1048 }
1049 ASSERT_NE(nullptr, popup_contents) << "Could not find WebContents for popup";
1050
1051 // Make sure the popup can connect and send messages to the extension.
1052 content::RenderFrameHost* popup_frame = popup_contents->GetMainFrame();
1053
1054 EXPECT_EQ(OK, CanConnectAndSendMessagesToFrame(popup_frame, extension.get(),
1055 nullptr));
1056 EXPECT_FALSE(AreAnyNonWebApisDefinedForFrame(popup_frame));
1057 }
1058
1021 // Tests externally_connectable between a web page and an extension with a 1059 // Tests externally_connectable between a web page and an extension with a
1022 // TLS channel ID created for the origin. 1060 // TLS channel ID created for the origin.
1023 class ExternallyConnectableMessagingWithTlsChannelIdTest : 1061 class ExternallyConnectableMessagingWithTlsChannelIdTest :
1024 public ExternallyConnectableMessagingTest { 1062 public ExternallyConnectableMessagingTest {
1025 public: 1063 public:
1026 ExternallyConnectableMessagingWithTlsChannelIdTest() 1064 ExternallyConnectableMessagingWithTlsChannelIdTest()
1027 : tls_channel_id_created_( 1065 : tls_channel_id_created_(
1028 base::WaitableEvent::ResetPolicy::AUTOMATIC, 1066 base::WaitableEvent::ResetPolicy::AUTOMATIC,
1029 base::WaitableEvent::InitialState::NOT_SIGNALED) {} 1067 base::WaitableEvent::InitialState::NOT_SIGNALED) {}
1030 1068
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); 1291 ui_test_utils::NavigateToURL(browser(), chromium_org_url());
1254 EXPECT_EQ(COULD_NOT_ESTABLISH_CONNECTION_ERROR, 1292 EXPECT_EQ(COULD_NOT_ESTABLISH_CONNECTION_ERROR,
1255 CanConnectAndSendMessagesToMainFrame(invalid.get())); 1293 CanConnectAndSendMessagesToMainFrame(invalid.get()));
1256 } 1294 }
1257 1295
1258 #endif // !defined(OS_WIN) - http://crbug.com/350517. 1296 #endif // !defined(OS_WIN) - http://crbug.com/350517.
1259 1297
1260 } // namespace 1298 } // namespace
1261 1299
1262 }; // namespace extensions 1300 }; // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698