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

Side by Side Diff: chrome/browser/devtools/devtools_sanity_browsertest.cc

Issue 2364633004: Lock down the registration of blob:chrome-extension:// URLs (Closed)
Patch Set: Fix layout test. Created 4 years, 2 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 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/cancelable_callback.h" 10 #include "base/cancelable_callback.h"
(...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 content::DOMMessageQueue message_queue; 958 content::DOMMessageQueue message_queue;
959 SwitchToExtensionPanel(window_, extension, "iframe_panel"); 959 SwitchToExtensionPanel(window_, extension, "iframe_panel");
960 std::string message; 960 std::string message;
961 while (true) { 961 while (true) {
962 ASSERT_TRUE(message_queue.WaitForMessage(&message)); 962 ASSERT_TRUE(message_queue.WaitForMessage(&message));
963 if (message == "\"DONE\"") 963 if (message == "\"DONE\"")
964 break; 964 break;
965 } 965 }
966 } 966 }
967 967
968 // Some web features, when used from an extension, are subject to browser-side
969 // security policy enforcement. Make sure they work properly from inside a
970 // devtools extension.
971 IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest,
972 DevToolsExtensionSecurityPolicyGrants) {
973 ASSERT_TRUE(embedded_test_server()->Start());
974
975 std::unique_ptr<extensions::TestExtensionDir> dir(
976 new extensions::TestExtensionDir());
977
978 extensions::DictionaryBuilder manifest;
979 dir->WriteManifest(extensions::DictionaryBuilder()
980 .Set("name", "Devtools Panel")
981 .Set("version", "1")
982 .Set("manifest_version", 2)
983 .Set("devtools_page", "devtools.html")
984 .ToJSON());
985
986 dir->WriteFile(
987 FILE_PATH_LITERAL("devtools.html"),
988 "<html><head><script src='devtools.js'></script></head></html>");
989
990 dir->WriteFile(
991 FILE_PATH_LITERAL("devtools.js"),
992 "chrome.devtools.panels.create('the_panel_name',\n"
993 " null,\n"
994 " 'panel.html',\n"
995 " function(panel) {\n"
996 " chrome.devtools.inspectedWindow.eval('console.log(\"PASS\")');\n"
997 " }\n"
998 ");\n");
999
1000 dir->WriteFile(FILE_PATH_LITERAL("panel.html"),
1001 "<html><body>A panel."
1002 "<script src='blob_xhr.js'></script>"
1003 "</body></html>");
1004 // Creating blobs from chrome-extension:// origins is only permitted if the
1005 // process has been granted permission to commit 'chrome-extension' schemes.
1006 dir->WriteFile(
1007 FILE_PATH_LITERAL("blob_xhr.js"),
1008 "var blob_url = URL.createObjectURL(new Blob(['blob contents']));\n"
1009 "var xhr = new XMLHttpRequest();\n"
1010 "xhr.open('GET', blob_url, true);\n"
1011 "xhr.onload = function (e) {\n"
1012 " domAutomationController.setAutomationId(0);\n"
1013 " domAutomationController.send(xhr.response);\n"
1014 "};\n"
1015 "xhr.send(null);\n");
1016 // Install the extension.
1017 const Extension* extension = LoadExtensionFromPath(dir->UnpackedPath());
1018 ASSERT_TRUE(extension);
1019
1020 // Open a devtools window.
1021 OpenDevToolsWindow(kDebuggerTestPage, false);
1022
1023 // Wait for the panel extension to finish loading -- it'll output 'PASS'
1024 // when it's installed. waitForTestResultsInConsole waits until that 'PASS'.
1025 RunTestFunction(window_, "waitForTestResultsInConsole");
1026
1027 // Now that we know the panel is loaded, switch to it. We'll wait until we
1028 // see a 'DONE' message sent from popup_iframe.html, indicating that it
1029 // loaded successfully.
1030 content::DOMMessageQueue message_queue;
1031 SwitchToExtensionPanel(window_, extension, "the_panel_name");
1032 std::string message;
1033 while (true) {
1034 ASSERT_TRUE(message_queue.WaitForMessage(&message));
1035 if (message == "\"blob contents\"")
1036 break;
1037 }
1038 }
1039
968 // Disabled on Windows due to flakiness. http://crbug.com/183649 1040 // Disabled on Windows due to flakiness. http://crbug.com/183649
969 #if defined(OS_WIN) 1041 #if defined(OS_WIN)
970 #define MAYBE_TestDevToolsExtensionMessaging DISABLED_TestDevToolsExtensionMessa ging 1042 #define MAYBE_TestDevToolsExtensionMessaging DISABLED_TestDevToolsExtensionMessa ging
971 #else 1043 #else
972 #define MAYBE_TestDevToolsExtensionMessaging TestDevToolsExtensionMessaging 1044 #define MAYBE_TestDevToolsExtensionMessaging TestDevToolsExtensionMessaging
973 #endif 1045 #endif
974 1046
975 // Tests that chrome.devtools extension can communicate with background page 1047 // Tests that chrome.devtools extension can communicate with background page
976 // using extension messaging. 1048 // using extension messaging.
977 IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest, 1049 IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest,
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
1447 DevToolsWindowTesting::OpenDevToolsWindowSync(GetInspectedTab(), true); 1519 DevToolsWindowTesting::OpenDevToolsWindowSync(GetInspectedTab(), true);
1448 chrome::DuplicateTab(browser()); 1520 chrome::DuplicateTab(browser());
1449 chrome::SelectPreviousTab(browser()); 1521 chrome::SelectPreviousTab(browser());
1450 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); 1522 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
1451 chrome::GoBack(browser(), WindowOpenDisposition::CURRENT_TAB); 1523 chrome::GoBack(browser(), WindowOpenDisposition::CURRENT_TAB);
1452 RunTestFunction(window, "testWindowInitializedOnNavigateBack"); 1524 RunTestFunction(window, "testWindowInitializedOnNavigateBack");
1453 1525
1454 DevToolsWindowTesting::CloseDevToolsWindowSync(window); 1526 DevToolsWindowTesting::CloseDevToolsWindowSync(window);
1455 content::WebUIControllerFactory::UnregisterFactoryForTesting(&test_factory); 1527 content::WebUIControllerFactory::UnregisterFactoryForTesting(&test_factory);
1456 } 1528 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698