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

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

Issue 402029: Don't allow content scripts to execute on file:// urls.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 | « no previous file | chrome/browser/extensions/extension_startup_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "base/ref_counted.h" 5 #include "base/ref_counted.h"
6 #include "chrome/browser/browser.h" 6 #include "chrome/browser/browser.h"
7 #include "chrome/browser/browser_list.h" 7 #include "chrome/browser/browser_list.h"
8 #include "chrome/browser/renderer_host/render_view_host.h" 8 #include "chrome/browser/renderer_host/render_view_host.h"
9 #include "chrome/browser/extensions/autoupdate_interceptor.h" 9 #include "chrome/browser/extensions/autoupdate_interceptor.h"
10 #include "chrome/browser/extensions/extension_browsertest.h" 10 #include "chrome/browser/extensions/extension_browsertest.h"
(...skipping 12 matching lines...) Expand all
23 #include "chrome/browser/views/frame/browser_view.h" 23 #include "chrome/browser/views/frame/browser_view.h"
24 #include "chrome/common/chrome_paths.h" 24 #include "chrome/common/chrome_paths.h"
25 #include "chrome/common/extensions/extension_error_reporter.h" 25 #include "chrome/common/extensions/extension_error_reporter.h"
26 #include "chrome/common/notification_service.h" 26 #include "chrome/common/notification_service.h"
27 #include "chrome/common/url_constants.h" 27 #include "chrome/common/url_constants.h"
28 #include "chrome/test/ui_test_utils.h" 28 #include "chrome/test/ui_test_utils.h"
29 #include "net/base/net_util.h" 29 #include "net/base/net_util.h"
30 30
31 const std::wstring kSubscribePage = 31 const std::wstring kSubscribePage =
32 L"files/extensions/subscribe_page_action/subscribe.html"; 32 L"files/extensions/subscribe_page_action/subscribe.html";
33 const std::wstring kFeedPage = L"files/feeds/feed.html";
34 const std::wstring kNoFeedPage = L"files/feeds/no_feed.html";
33 const std::wstring kValidFeed0 = L"files/feeds/feed_script.xml"; 35 const std::wstring kValidFeed0 = L"files/feeds/feed_script.xml";
34 const std::wstring kValidFeed1 = L"files/feeds/feed1.xml"; 36 const std::wstring kValidFeed1 = L"files/feeds/feed1.xml";
35 const std::wstring kValidFeed2 = L"files/feeds/feed2.xml"; 37 const std::wstring kValidFeed2 = L"files/feeds/feed2.xml";
36 const std::wstring kValidFeed3 = L"files/feeds/feed3.xml"; 38 const std::wstring kValidFeed3 = L"files/feeds/feed3.xml";
37 const std::wstring kValidFeed4 = L"files/feeds/feed4.xml"; 39 const std::wstring kValidFeed4 = L"files/feeds/feed4.xml";
38 const std::wstring kValidFeed5 = L"files/feeds/feed5.xml"; 40 const std::wstring kValidFeed5 = L"files/feeds/feed5.xml";
39 const std::wstring kInvalidFeed1 = L"files/feeds/feed_invalid1.xml"; 41 const std::wstring kInvalidFeed1 = L"files/feeds/feed_invalid1.xml";
40 const std::wstring kInvalidFeed2 = L"files/feeds/feed_invalid2.xml"; 42 const std::wstring kInvalidFeed2 = L"files/feeds/feed_invalid2.xml";
43 const std::wstring kLocalization =
44 L"file/extensions/browsertest/title_localized_pa/simple.html";
45 const std::wstring kTestFile = L"file/extensions/test_file.html";
41 46
42 // Looks for an ExtensionHost whose URL has the given path component (including 47 // Looks for an ExtensionHost whose URL has the given path component (including
43 // leading slash). Also verifies that the expected number of hosts are loaded. 48 // leading slash). Also verifies that the expected number of hosts are loaded.
44 static ExtensionHost* FindHostWithPath(ExtensionProcessManager* manager, 49 static ExtensionHost* FindHostWithPath(ExtensionProcessManager* manager,
45 const std::string& path, 50 const std::string& path,
46 int expected_hosts) { 51 int expected_hosts) {
47 ExtensionHost* host = NULL; 52 ExtensionHost* host = NULL;
48 int num_hosts = 0; 53 int num_hosts = 0;
49 for (ExtensionProcessManager::const_iterator iter = manager->begin(); 54 for (ExtensionProcessManager::const_iterator iter = manager->begin();
50 iter != manager->end(); ++iter) { 55 iter != manager->end(); ++iter) {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 result = false; 206 result = false;
202 ui_test_utils::ExecuteJavaScriptAndExtractBool( 207 ui_test_utils::ExecuteJavaScriptAndExtractBool(
203 browser()->GetSelectedTabContents()->render_view_host(), L"", 208 browser()->GetSelectedTabContents()->render_view_host(), L"",
204 L"testTabsAPI()", &result); 209 L"testTabsAPI()", &result);
205 EXPECT_TRUE(result); 210 EXPECT_TRUE(result);
206 } 211 }
207 212
208 #if defined(OS_WIN) || defined(OS_LINUX) 213 #if defined(OS_WIN) || defined(OS_LINUX)
209 // Tests that we can load page actions in the Omnibox. 214 // Tests that we can load page actions in the Omnibox.
210 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageAction) { 215 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageAction) {
216 HTTPTestServer* server = StartHTTPServer();
217
211 // This page action will not show an icon, since it doesn't specify one but 218 // This page action will not show an icon, since it doesn't specify one but
212 // is included here to test for a crash (http://crbug.com/25562). 219 // is included here to test for a crash (http://crbug.com/25562).
213 ASSERT_TRUE(LoadExtension( 220 ASSERT_TRUE(LoadExtension(
214 test_data_dir_.AppendASCII("browsertest") 221 test_data_dir_.AppendASCII("browsertest")
215 .AppendASCII("crash_25562"))); 222 .AppendASCII("crash_25562")));
216 223
217 ASSERT_TRUE(LoadExtension( 224 ASSERT_TRUE(LoadExtension(
218 test_data_dir_.AppendASCII("subscribe_page_action"))); 225 test_data_dir_.AppendASCII("subscribe_page_action")));
219 226
220 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); 227 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0));
221 228
222 // Navigate to the feed page. 229 // Navigate to the feed page.
223 FilePath test_dir; 230 GURL feed_url = server->TestServerPageW(kFeedPage);
224 PathService::Get(chrome::DIR_TEST_DATA, &test_dir); 231 ui_test_utils::NavigateToURL(browser(), feed_url);
225 FilePath feed = test_dir.AppendASCII("feeds")
226 .AppendASCII("feed.html");
227
228 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(feed));
229
230 // We should now have one page action ready to go in the LocationBar. 232 // We should now have one page action ready to go in the LocationBar.
231 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); 233 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1));
232 234
233 FilePath no_feed = test_dir.AppendASCII("feeds") 235 // Navigate to a page with no feed.
234 .AppendASCII("nofeed.html"); 236 GURL no_feed = server->TestServerPageW(kNoFeedPage);
235 237 ui_test_utils::NavigateToURL(browser(), no_feed);
236 // Make sure the page action goes away. 238 // Make sure the page action goes away.
237 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(no_feed));
238 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); 239 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0));
239 } 240 }
240 241
241 // Tests that the location bar forgets about unloaded page actions. 242 // Tests that the location bar forgets about unloaded page actions.
242 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UnloadPageAction) { 243 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UnloadPageAction) {
244 HTTPTestServer* server = StartHTTPServer();
245
243 FilePath extension_path(test_data_dir_.AppendASCII("subscribe_page_action")); 246 FilePath extension_path(test_data_dir_.AppendASCII("subscribe_page_action"));
244 ASSERT_TRUE(LoadExtension(extension_path)); 247 ASSERT_TRUE(LoadExtension(extension_path));
245 248
246 // Navigation prompts the location bar to load page actions. 249 // Navigation prompts the location bar to load page actions.
247 FilePath test_dir; 250 GURL feed_url = server->TestServerPageW(kFeedPage);
248 PathService::Get(chrome::DIR_TEST_DATA, &test_dir); 251 ui_test_utils::NavigateToURL(browser(), feed_url);
249 FilePath feed = test_dir.AppendASCII("feeds")
250 .AppendASCII("feed.html");
251
252 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(feed));
253 ASSERT_TRUE(WaitForPageActionCountChangeTo(1)); 252 ASSERT_TRUE(WaitForPageActionCountChangeTo(1));
254 253
255 UnloadExtension(last_loaded_extension_id_); 254 UnloadExtension(last_loaded_extension_id_);
256 255
257 // Make sure the page action goes away when it's unloaded. 256 // Make sure the page action goes away when it's unloaded.
258 ASSERT_TRUE(WaitForPageActionCountChangeTo(0)); 257 ASSERT_TRUE(WaitForPageActionCountChangeTo(0));
259 } 258 }
260 259
261 // Tests that tooltips of a browser action icon can be specified using UTF8. 260 // Tests that tooltips of a browser action icon can be specified using UTF8.
262 // See http://crbug.com/25349. 261 // See http://crbug.com/25349.
(...skipping 12 matching lines...) Expand all
275 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), 274 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(),
276 extension->name().c_str()); 275 extension->name().c_str());
277 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); 276 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents());
278 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), 277 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(),
279 extension->browser_action()->GetTitle(tab_id).c_str()); 278 extension->browser_action()->GetTitle(tab_id).c_str());
280 } 279 }
281 280
282 // Tests that tooltips of a page action icon can be specified using UTF8. 281 // Tests that tooltips of a page action icon can be specified using UTF8.
283 // See http://crbug.com/25349. 282 // See http://crbug.com/25349.
284 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) { 283 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) {
284 HTTPTestServer* server = StartHTTPServer();
285
285 FilePath extension_path(test_data_dir_.AppendASCII("browsertest") 286 FilePath extension_path(test_data_dir_.AppendASCII("browsertest")
286 .AppendASCII("title_localized_pa")); 287 .AppendASCII("title_localized_pa"));
287 ASSERT_TRUE(LoadExtension(extension_path)); 288 ASSERT_TRUE(LoadExtension(extension_path));
288 289
289 // Any navigation prompts the location bar to load the page action. 290 // Any navigation prompts the location bar to load the page action.
290 FilePath test_dir; 291 GURL url = server->TestServerPageW(kLocalization);
291 PathService::Get(chrome::DIR_TEST_DATA, &test_dir); 292 ui_test_utils::NavigateToURL(browser(), url);
292 FilePath path = extension_path.AppendASCII("simple.html");
293
294 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(path));
295 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); 293 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1));
296 294
297 ExtensionsService* service = browser()->profile()->GetExtensionsService(); 295 ExtensionsService* service = browser()->profile()->GetExtensionsService();
298 const ExtensionList* extensions = service->extensions(); 296 const ExtensionList* extensions = service->extensions();
299 ASSERT_EQ(1u, extensions->size()); 297 ASSERT_EQ(1u, extensions->size());
300 Extension* extension = extensions->at(0); 298 Extension* extension = extensions->at(0);
301 299
302 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(), 300 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(),
303 extension->description().c_str()); 301 extension->description().c_str());
304 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), 302 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(),
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 520
523 bool result = false; 521 bool result = false;
524 ui_test_utils::ExecuteJavaScriptAndExtractBool( 522 ui_test_utils::ExecuteJavaScriptAndExtractBool(
525 host->render_view_host(), L"", L"testLastError()", &result); 523 host->render_view_host(), L"", L"testLastError()", &result);
526 EXPECT_TRUE(result); 524 EXPECT_TRUE(result);
527 } 525 }
528 526
529 #if defined(OS_WIN) // TODO(port) - enable. 527 #if defined(OS_WIN) // TODO(port) - enable.
530 // Tests that message passing between extensions and content scripts works. 528 // Tests that message passing between extensions and content scripts works.
531 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MessagingContentScript) { 529 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MessagingContentScript) {
530 HTTPTestServer* server = StartHTTPServer();
531
532 ASSERT_TRUE(LoadExtension( 532 ASSERT_TRUE(LoadExtension(
533 test_data_dir_.AppendASCII("good").AppendASCII("Extensions") 533 test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
534 .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa") 534 .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa")
535 .AppendASCII("1.0"))); 535 .AppendASCII("1.0")));
536 536
537 UserScriptMaster* master = browser()->profile()->GetUserScriptMaster(); 537 UserScriptMaster* master = browser()->profile()->GetUserScriptMaster();
538 if (!master->ScriptsReady()) { 538 if (!master->ScriptsReady()) {
539 // Wait for UserScriptMaster to finish its scan. 539 // Wait for UserScriptMaster to finish its scan.
540 NotificationRegistrar registrar; 540 NotificationRegistrar registrar;
541 registrar.Add(this, NotificationType::USER_SCRIPTS_UPDATED, 541 registrar.Add(this, NotificationType::USER_SCRIPTS_UPDATED,
542 NotificationService::AllSources()); 542 NotificationService::AllSources());
543 ui_test_utils::RunMessageLoop(); 543 ui_test_utils::RunMessageLoop();
544 } 544 }
545 ASSERT_TRUE(master->ScriptsReady()); 545 ASSERT_TRUE(master->ScriptsReady());
546 546
547 // Get the ExtensionHost that is hosting our toolstrip page. 547 // Get the ExtensionHost that is hosting our toolstrip page.
548 ExtensionProcessManager* manager = 548 ExtensionProcessManager* manager =
549 browser()->profile()->GetExtensionProcessManager(); 549 browser()->profile()->GetExtensionProcessManager();
550 ExtensionHost* host = FindHostWithPath(manager, "/toolstrip.html", 1); 550 ExtensionHost* host = FindHostWithPath(manager, "/toolstrip.html", 1);
551 551
552 // Load the tab whose content script will communicate with our toolstrip. 552 // Load the tab whose content script will communicate with our toolstrip.
553 FilePath test_file; 553 GURL url = server->TestServerPageW(kTestFile);
554 PathService::Get(chrome::DIR_TEST_DATA, &test_file); 554 ui_test_utils::NavigateToURL(browser(), url);
555 test_file = test_file.AppendASCII("extensions")
556 .AppendASCII("test_file.html");
557 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(test_file));
558 555
559 // Test extension->tab messaging. 556 // Test extension->tab messaging.
560 bool result = false; 557 bool result = false;
561 ui_test_utils::ExecuteJavaScriptAndExtractBool( 558 ui_test_utils::ExecuteJavaScriptAndExtractBool(
562 host->render_view_host(), L"", L"testPostMessage()", &result); 559 host->render_view_host(), L"", L"testPostMessage()", &result);
563 EXPECT_TRUE(result); 560 EXPECT_TRUE(result);
564 561
565 // Test port naming 562 // Test port naming.
566 result = false; 563 result = false;
567 ui_test_utils::ExecuteJavaScriptAndExtractBool( 564 ui_test_utils::ExecuteJavaScriptAndExtractBool(
568 host->render_view_host(), L"", L"testPortName()", &result); 565 host->render_view_host(), L"", L"testPortName()", &result);
569 EXPECT_TRUE(result); 566 EXPECT_TRUE(result);
570 567
571 // Test tab->extension messaging. 568 // Test tab->extension messaging.
572 result = false; 569 result = false;
573 ui_test_utils::ExecuteJavaScriptAndExtractBool( 570 ui_test_utils::ExecuteJavaScriptAndExtractBool(
574 host->render_view_host(), L"", L"testPostMessageFromTab()", &result); 571 host->render_view_host(), L"", L"testPostMessageFromTab()", &result);
575 EXPECT_TRUE(result); 572 EXPECT_TRUE(result);
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 869
873 // If the options page hasn't already come up, wait for it. 870 // If the options page hasn't already come up, wait for it.
874 if (tab_strip->count() == 1) { 871 if (tab_strip->count() == 1) {
875 ui_test_utils::WaitForNewTab(browser()); 872 ui_test_utils::WaitForNewTab(browser());
876 } 873 }
877 ASSERT_EQ(2, tab_strip->count()); 874 ASSERT_EQ(2, tab_strip->count());
878 875
879 EXPECT_EQ(extension->GetResourceURL("options.html"), 876 EXPECT_EQ(extension->GetResourceURL("options.html"),
880 tab_strip->GetTabContentsAt(1)->GetURL()); 877 tab_strip->GetTabContentsAt(1)->GetURL());
881 } 878 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_startup_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698