| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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" |
| 11 #include "chrome/browser/extensions/extension_error_reporter.h" | 11 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 12 #include "chrome/browser/extensions/extension_host.h" | 12 #include "chrome/browser/extensions/extension_host.h" |
| 13 #include "chrome/browser/extensions/extension_process_manager.h" | 13 #include "chrome/browser/extensions/extension_process_manager.h" |
| 14 #include "chrome/browser/extensions/extension_tabs_module.h" | 14 #include "chrome/browser/extensions/extension_tabs_module.h" |
| 15 #include "chrome/browser/extensions/extensions_service.h" | 15 #include "chrome/browser/extensions/extensions_service.h" |
| 16 #include "chrome/browser/extensions/extension_updater.h" | 16 #include "chrome/browser/extensions/extension_updater.h" |
| 17 #include "chrome/browser/profile.h" | 17 #include "chrome/browser/profile.h" |
| 18 #include "chrome/browser/renderer_host/site_instance.h" | 18 #include "chrome/browser/renderer_host/site_instance.h" |
| 19 #include "chrome/browser/tab_contents/tab_contents.h" | 19 #include "chrome/browser/tab_contents/tab_contents.h" |
| 20 #if defined(TOOLKIT_VIEWS) | 20 #if defined(TOOLKIT_VIEWS) |
| 21 #include "chrome/browser/views/extensions/extension_shelf.h" | 21 #include "chrome/browser/views/extensions/extension_shelf.h" |
| 22 #include "chrome/browser/views/frame/browser_view.h" | 22 #include "chrome/browser/views/frame/browser_view.h" |
| 23 #endif | 23 #endif |
| 24 #include "chrome/common/chrome_paths.h" | 24 #include "chrome/common/chrome_paths.h" |
| 25 #include "chrome/common/extensions/extension_action.h" | 25 #include "chrome/common/extensions/extension_action.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 #include "net/test/test_server.h" |
| 30 | 31 |
| 31 const std::string kSubscribePage = "/subscribe.html"; | 32 const std::string kSubscribePage = "/subscribe.html"; |
| 32 const std::string kFeedPage = "files/feeds/feed.html"; | 33 const std::string kFeedPage = "files/feeds/feed.html"; |
| 33 const std::string kFeedPageMultiRel = "files/feeds/feed_multi_rel.html"; | 34 const std::string kFeedPageMultiRel = "files/feeds/feed_multi_rel.html"; |
| 34 const std::string kNoFeedPage = "files/feeds/no_feed.html"; | 35 const std::string kNoFeedPage = "files/feeds/no_feed.html"; |
| 35 const std::string kValidFeed0 = "files/feeds/feed_script.xml"; | 36 const std::string kValidFeed0 = "files/feeds/feed_script.xml"; |
| 36 const std::string kValidFeed1 = "files/feeds/feed1.xml"; | 37 const std::string kValidFeed1 = "files/feeds/feed1.xml"; |
| 37 const std::string kValidFeed2 = "files/feeds/feed2.xml"; | 38 const std::string kValidFeed2 = "files/feeds/feed2.xml"; |
| 38 const std::string kValidFeed3 = "files/feeds/feed3.xml"; | 39 const std::string kValidFeed3 = "files/feeds/feed3.xml"; |
| 39 const std::string kValidFeed4 = "files/feeds/feed4.xml"; | 40 const std::string kValidFeed4 = "files/feeds/feed4.xml"; |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 GURL("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html")); | 200 GURL("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html")); |
| 200 result = false; | 201 result = false; |
| 201 ui_test_utils::ExecuteJavaScriptAndExtractBool( | 202 ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 202 browser()->GetSelectedTabContents()->render_view_host(), L"", | 203 browser()->GetSelectedTabContents()->render_view_host(), L"", |
| 203 L"testTabsAPI()", &result); | 204 L"testTabsAPI()", &result); |
| 204 EXPECT_TRUE(result); | 205 EXPECT_TRUE(result); |
| 205 } | 206 } |
| 206 | 207 |
| 207 // Tests that we can load page actions in the Omnibox. | 208 // Tests that we can load page actions in the Omnibox. |
| 208 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageAction) { | 209 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageAction) { |
| 209 HTTPTestServer* server = StartHTTPServer(); | 210 net::HTTPTestServer* server = StartHTTPServer(); |
| 210 ASSERT_TRUE(server); | 211 ASSERT_TRUE(server); |
| 211 | 212 |
| 212 // This page action will not show an icon, since it doesn't specify one but | 213 // This page action will not show an icon, since it doesn't specify one but |
| 213 // is included here to test for a crash (http://crbug.com/25562). | 214 // is included here to test for a crash (http://crbug.com/25562). |
| 214 ASSERT_TRUE(LoadExtension( | 215 ASSERT_TRUE(LoadExtension( |
| 215 test_data_dir_.AppendASCII("browsertest") | 216 test_data_dir_.AppendASCII("browsertest") |
| 216 .AppendASCII("crash_25562"))); | 217 .AppendASCII("crash_25562"))); |
| 217 | 218 |
| 218 ASSERT_TRUE(LoadExtension( | 219 ASSERT_TRUE(LoadExtension( |
| 219 test_data_dir_.AppendASCII("subscribe_page_action"))); | 220 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 220 | 221 |
| 221 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); | 222 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); |
| 222 | 223 |
| 223 // Navigate to the feed page. | 224 // Navigate to the feed page. |
| 224 GURL feed_url = server->TestServerPage(kFeedPage); | 225 GURL feed_url = server->TestServerPage(kFeedPage); |
| 225 ui_test_utils::NavigateToURL(browser(), feed_url); | 226 ui_test_utils::NavigateToURL(browser(), feed_url); |
| 226 // We should now have one page action ready to go in the LocationBar. | 227 // We should now have one page action ready to go in the LocationBar. |
| 227 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); | 228 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); |
| 228 | 229 |
| 229 // Navigate to a page with no feed. | 230 // Navigate to a page with no feed. |
| 230 GURL no_feed = server->TestServerPage(kNoFeedPage); | 231 GURL no_feed = server->TestServerPage(kNoFeedPage); |
| 231 ui_test_utils::NavigateToURL(browser(), no_feed); | 232 ui_test_utils::NavigateToURL(browser(), no_feed); |
| 232 // Make sure the page action goes away. | 233 // Make sure the page action goes away. |
| 233 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); | 234 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); |
| 234 } | 235 } |
| 235 | 236 |
| 236 // Tests that we don't lose the page action icon on in-page navigations. | 237 // Tests that we don't lose the page action icon on in-page navigations. |
| 237 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionInPageNavigation) { | 238 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionInPageNavigation) { |
| 238 HTTPTestServer* server = StartHTTPServer(); | 239 net::HTTPTestServer* server = StartHTTPServer(); |
| 239 ASSERT_TRUE(server); | 240 ASSERT_TRUE(server); |
| 240 | 241 |
| 241 FilePath extension_path(test_data_dir_.AppendASCII("api_test") | 242 FilePath extension_path(test_data_dir_.AppendASCII("api_test") |
| 242 .AppendASCII("page_action") | 243 .AppendASCII("page_action") |
| 243 .AppendASCII("hash_change")); | 244 .AppendASCII("hash_change")); |
| 244 ASSERT_TRUE(LoadExtension(extension_path)); | 245 ASSERT_TRUE(LoadExtension(extension_path)); |
| 245 | 246 |
| 246 // Page action should become visible when we navigate here. | 247 // Page action should become visible when we navigate here. |
| 247 GURL feed_url = server->TestServerPage(kHashPageA); | 248 GURL feed_url = server->TestServerPage(kHashPageA); |
| 248 ui_test_utils::NavigateToURL(browser(), feed_url); | 249 ui_test_utils::NavigateToURL(browser(), feed_url); |
| 249 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); | 250 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); |
| 250 | 251 |
| 251 // In-page navigation, page action should remain. | 252 // In-page navigation, page action should remain. |
| 252 feed_url = server->TestServerPage(kHashPageAHash); | 253 feed_url = server->TestServerPage(kHashPageAHash); |
| 253 ui_test_utils::NavigateToURL(browser(), feed_url); | 254 ui_test_utils::NavigateToURL(browser(), feed_url); |
| 254 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); | 255 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); |
| 255 | 256 |
| 256 // Not an in-page navigation, page action should go away. | 257 // Not an in-page navigation, page action should go away. |
| 257 feed_url = server->TestServerPage(kHashPageB); | 258 feed_url = server->TestServerPage(kHashPageB); |
| 258 ui_test_utils::NavigateToURL(browser(), feed_url); | 259 ui_test_utils::NavigateToURL(browser(), feed_url); |
| 259 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); | 260 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); |
| 260 } | 261 } |
| 261 | 262 |
| 262 // Tests that the location bar forgets about unloaded page actions. | 263 // Tests that the location bar forgets about unloaded page actions. |
| 263 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UnloadPageAction) { | 264 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UnloadPageAction) { |
| 264 HTTPTestServer* server = StartHTTPServer(); | 265 net::HTTPTestServer* server = StartHTTPServer(); |
| 265 ASSERT_TRUE(server); | 266 ASSERT_TRUE(server); |
| 266 | 267 |
| 267 FilePath extension_path(test_data_dir_.AppendASCII("subscribe_page_action")); | 268 FilePath extension_path(test_data_dir_.AppendASCII("subscribe_page_action")); |
| 268 ASSERT_TRUE(LoadExtension(extension_path)); | 269 ASSERT_TRUE(LoadExtension(extension_path)); |
| 269 | 270 |
| 270 // Navigation prompts the location bar to load page actions. | 271 // Navigation prompts the location bar to load page actions. |
| 271 GURL feed_url = server->TestServerPage(kFeedPage); | 272 GURL feed_url = server->TestServerPage(kFeedPage); |
| 272 ui_test_utils::NavigateToURL(browser(), feed_url); | 273 ui_test_utils::NavigateToURL(browser(), feed_url); |
| 273 ASSERT_TRUE(WaitForPageActionCountChangeTo(1)); | 274 ASSERT_TRUE(WaitForPageActionCountChangeTo(1)); |
| 274 | 275 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 | 310 |
| 310 ReloadExtension(extensionB->id()); | 311 ReloadExtension(extensionB->id()); |
| 311 | 312 |
| 312 // This is where it would crash, before http://crbug.com/44415 was fixed. | 313 // This is where it would crash, before http://crbug.com/44415 was fixed. |
| 313 ReloadExtension(extensionA->id()); | 314 ReloadExtension(extensionA->id()); |
| 314 } | 315 } |
| 315 | 316 |
| 316 // Makes sure that the RSS detects RSS feed links, even when rel tag contains | 317 // Makes sure that the RSS detects RSS feed links, even when rel tag contains |
| 317 // more than just "alternate". | 318 // more than just "alternate". |
| 318 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, RSSMultiRelLink) { | 319 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, RSSMultiRelLink) { |
| 319 HTTPTestServer* server = StartHTTPServer(); | 320 net::HTTPTestServer* server = StartHTTPServer(); |
| 320 ASSERT_TRUE(server); | 321 ASSERT_TRUE(server); |
| 321 | 322 |
| 322 ASSERT_TRUE(LoadExtension( | 323 ASSERT_TRUE(LoadExtension( |
| 323 test_data_dir_.AppendASCII("subscribe_page_action"))); | 324 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 324 | 325 |
| 325 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); | 326 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(0)); |
| 326 | 327 |
| 327 // Navigate to the feed page. | 328 // Navigate to the feed page. |
| 328 GURL feed_url = server->TestServerPage(kFeedPageMultiRel); | 329 GURL feed_url = server->TestServerPage(kFeedPageMultiRel); |
| 329 ui_test_utils::NavigateToURL(browser(), feed_url); | 330 ui_test_utils::NavigateToURL(browser(), feed_url); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 348 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), | 349 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), |
| 349 extension->name().c_str()); | 350 extension->name().c_str()); |
| 350 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); | 351 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); |
| 351 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), | 352 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), |
| 352 extension->browser_action()->GetTitle(tab_id).c_str()); | 353 extension->browser_action()->GetTitle(tab_id).c_str()); |
| 353 } | 354 } |
| 354 | 355 |
| 355 // Tests that tooltips of a page action icon can be specified using UTF8. | 356 // Tests that tooltips of a page action icon can be specified using UTF8. |
| 356 // See http://crbug.com/25349. | 357 // See http://crbug.com/25349. |
| 357 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) { | 358 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) { |
| 358 HTTPTestServer* server = StartHTTPServer(); | 359 net::HTTPTestServer* server = StartHTTPServer(); |
| 359 ASSERT_TRUE(server); | 360 ASSERT_TRUE(server); |
| 360 | 361 |
| 361 ExtensionsService* service = browser()->profile()->GetExtensionsService(); | 362 ExtensionsService* service = browser()->profile()->GetExtensionsService(); |
| 362 const size_t size_before = service->extensions()->size(); | 363 const size_t size_before = service->extensions()->size(); |
| 363 | 364 |
| 364 FilePath extension_path(test_data_dir_.AppendASCII("browsertest") | 365 FilePath extension_path(test_data_dir_.AppendASCII("browsertest") |
| 365 .AppendASCII("title_localized_pa")); | 366 .AppendASCII("title_localized_pa")); |
| 366 ASSERT_TRUE(LoadExtension(extension_path)); | 367 ASSERT_TRUE(LoadExtension(extension_path)); |
| 367 | 368 |
| 368 // Any navigation prompts the location bar to load the page action. | 369 // Any navigation prompts the location bar to load the page action. |
| 369 GURL url = server->TestServerPage(kLocalization); | 370 GURL url = server->TestServerPage(kLocalization); |
| 370 ui_test_utils::NavigateToURL(browser(), url); | 371 ui_test_utils::NavigateToURL(browser(), url); |
| 371 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); | 372 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); |
| 372 | 373 |
| 373 ASSERT_EQ(size_before + 1, service->extensions()->size()); | 374 ASSERT_EQ(size_before + 1, service->extensions()->size()); |
| 374 Extension* extension = service->extensions()->at(size_before); | 375 Extension* extension = service->extensions()->at(size_before); |
| 375 | 376 |
| 376 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(), | 377 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(), |
| 377 extension->description().c_str()); | 378 extension->description().c_str()); |
| 378 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), | 379 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), |
| 379 extension->name().c_str()); | 380 extension->name().c_str()); |
| 380 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); | 381 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); |
| 381 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), | 382 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), |
| 382 extension->page_action()->GetTitle(tab_id).c_str()); | 383 extension->page_action()->GetTitle(tab_id).c_str()); |
| 383 } | 384 } |
| 384 | 385 |
| 385 GURL GetFeedUrl(HTTPTestServer* server, const std::string& feed_page, | 386 GURL GetFeedUrl(net::HTTPTestServer* server, const std::string& feed_page, |
| 386 bool direct_url, std::string extension_id) { | 387 bool direct_url, std::string extension_id) { |
| 387 GURL feed_url = server->TestServerPage(feed_page); | 388 GURL feed_url = server->TestServerPage(feed_page); |
| 388 if (direct_url) { | 389 if (direct_url) { |
| 389 // We navigate directly to the subscribe page for feeds where the feed | 390 // We navigate directly to the subscribe page for feeds where the feed |
| 390 // sniffing won't work, in other words, as is the case for malformed feeds. | 391 // sniffing won't work, in other words, as is the case for malformed feeds. |
| 391 return GURL(std::string(chrome::kExtensionScheme) + | 392 return GURL(std::string(chrome::kExtensionScheme) + |
| 392 chrome::kStandardSchemeSeparator + | 393 chrome::kStandardSchemeSeparator + |
| 393 extension_id + std::string(kSubscribePage) + std::string("?") + | 394 extension_id + std::string(kSubscribePage) + std::string("?") + |
| 394 feed_url.spec() + std::string("&synchronous")); | 395 feed_url.spec() + std::string("&synchronous")); |
| 395 } else { | 396 } else { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 return false; | 439 return false; |
| 439 | 440 |
| 440 EXPECT_STREQ(expected_value.c_str(), returned_value.c_str()); | 441 EXPECT_STREQ(expected_value.c_str(), returned_value.c_str()); |
| 441 return expected_value == returned_value; | 442 return expected_value == returned_value; |
| 442 } | 443 } |
| 443 | 444 |
| 444 // Navigates to a feed page and, if |sniff_xml_type| is set, wait for the | 445 // Navigates to a feed page and, if |sniff_xml_type| is set, wait for the |
| 445 // extension to kick in, detect the feed and redirect to a feed preview page. | 446 // extension to kick in, detect the feed and redirect to a feed preview page. |
| 446 // |sniff_xml_type| is generally set to true if the feed is sniffable and false | 447 // |sniff_xml_type| is generally set to true if the feed is sniffable and false |
| 447 // for invalid feeds. | 448 // for invalid feeds. |
| 448 void NavigateToFeedAndValidate(HTTPTestServer* server, | 449 void NavigateToFeedAndValidate(net::HTTPTestServer* server, |
| 449 const std::string& url, | 450 const std::string& url, |
| 450 Browser* browser, | 451 Browser* browser, |
| 451 bool sniff_xml_type, | 452 bool sniff_xml_type, |
| 452 const std::string& expected_feed_title, | 453 const std::string& expected_feed_title, |
| 453 const std::string& expected_item_title, | 454 const std::string& expected_item_title, |
| 454 const std::string& expected_item_desc, | 455 const std::string& expected_item_desc, |
| 455 const std::string& expected_error) { | 456 const std::string& expected_error) { |
| 456 if (sniff_xml_type) { | 457 if (sniff_xml_type) { |
| 457 // TODO(finnur): Implement this is a non-flaky way. | 458 // TODO(finnur): Implement this is a non-flaky way. |
| 458 } | 459 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 477 L"//html/body/div/iframe[1]", | 478 L"//html/body/div/iframe[1]", |
| 478 jscript_desc, | 479 jscript_desc, |
| 479 expected_item_desc)); | 480 expected_item_desc)); |
| 480 ASSERT_TRUE(ValidatePageElement(tab, | 481 ASSERT_TRUE(ValidatePageElement(tab, |
| 481 L"//html/body/div/iframe[1]", | 482 L"//html/body/div/iframe[1]", |
| 482 jscript_error, | 483 jscript_error, |
| 483 expected_error)); | 484 expected_error)); |
| 484 } | 485 } |
| 485 | 486 |
| 486 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed1) { | 487 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed1) { |
| 487 HTTPTestServer* server = StartHTTPServer(); | 488 net::HTTPTestServer* server = StartHTTPServer(); |
| 488 ASSERT_TRUE(server); | 489 ASSERT_TRUE(server); |
| 489 | 490 |
| 490 ASSERT_TRUE(LoadExtension( | 491 ASSERT_TRUE(LoadExtension( |
| 491 test_data_dir_.AppendASCII("subscribe_page_action"))); | 492 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 492 | 493 |
| 493 NavigateToFeedAndValidate(server, kValidFeed1, browser(), true, | 494 NavigateToFeedAndValidate(server, kValidFeed1, browser(), true, |
| 494 "Feed for MyFeedTitle", | 495 "Feed for MyFeedTitle", |
| 495 "Title 1", | 496 "Title 1", |
| 496 "Desc", | 497 "Desc", |
| 497 "No error"); | 498 "No error"); |
| 498 } | 499 } |
| 499 | 500 |
| 500 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed2) { | 501 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed2) { |
| 501 HTTPTestServer* server = StartHTTPServer(); | 502 net::HTTPTestServer* server = StartHTTPServer(); |
| 502 ASSERT_TRUE(server); | 503 ASSERT_TRUE(server); |
| 503 | 504 |
| 504 ASSERT_TRUE(LoadExtension( | 505 ASSERT_TRUE(LoadExtension( |
| 505 test_data_dir_.AppendASCII("subscribe_page_action"))); | 506 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 506 | 507 |
| 507 NavigateToFeedAndValidate(server, kValidFeed2, browser(), true, | 508 NavigateToFeedAndValidate(server, kValidFeed2, browser(), true, |
| 508 "Feed for MyFeed2", | 509 "Feed for MyFeed2", |
| 509 "My item title1", | 510 "My item title1", |
| 510 "This is a summary.", | 511 "This is a summary.", |
| 511 "No error"); | 512 "No error"); |
| 512 } | 513 } |
| 513 | 514 |
| 514 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed3) { | 515 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed3) { |
| 515 HTTPTestServer* server = StartHTTPServer(); | 516 net::HTTPTestServer* server = StartHTTPServer(); |
| 516 ASSERT_TRUE(server); | 517 ASSERT_TRUE(server); |
| 517 | 518 |
| 518 ASSERT_TRUE(LoadExtension( | 519 ASSERT_TRUE(LoadExtension( |
| 519 test_data_dir_.AppendASCII("subscribe_page_action"))); | 520 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 520 | 521 |
| 521 NavigateToFeedAndValidate(server, kValidFeed3, browser(), true, | 522 NavigateToFeedAndValidate(server, kValidFeed3, browser(), true, |
| 522 "Feed for Google Code buglist rss feed", | 523 "Feed for Google Code buglist rss feed", |
| 523 "My dear title", | 524 "My dear title", |
| 524 "My dear content", | 525 "My dear content", |
| 525 "No error"); | 526 "No error"); |
| 526 } | 527 } |
| 527 | 528 |
| 528 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed4) { | 529 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed4) { |
| 529 HTTPTestServer* server = StartHTTPServer(); | 530 net::HTTPTestServer* server = StartHTTPServer(); |
| 530 ASSERT_TRUE(server); | 531 ASSERT_TRUE(server); |
| 531 | 532 |
| 532 ASSERT_TRUE(LoadExtension( | 533 ASSERT_TRUE(LoadExtension( |
| 533 test_data_dir_.AppendASCII("subscribe_page_action"))); | 534 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 534 | 535 |
| 535 NavigateToFeedAndValidate(server, kValidFeed4, browser(), true, | 536 NavigateToFeedAndValidate(server, kValidFeed4, browser(), true, |
| 536 "Feed for Title chars <script> %23 stop", | 537 "Feed for Title chars <script> %23 stop", |
| 537 "Title chars %23 stop", | 538 "Title chars %23 stop", |
| 538 "My dear content %23 stop", | 539 "My dear content %23 stop", |
| 539 "No error"); | 540 "No error"); |
| 540 } | 541 } |
| 541 | 542 |
| 542 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed0) { | 543 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed0) { |
| 543 HTTPTestServer* server = StartHTTPServer(); | 544 net::HTTPTestServer* server = StartHTTPServer(); |
| 544 ASSERT_TRUE(server); | 545 ASSERT_TRUE(server); |
| 545 | 546 |
| 546 ASSERT_TRUE(LoadExtension( | 547 ASSERT_TRUE(LoadExtension( |
| 547 test_data_dir_.AppendASCII("subscribe_page_action"))); | 548 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 548 | 549 |
| 549 // Try a feed with a link with an onclick handler (before r27440 this would | 550 // Try a feed with a link with an onclick handler (before r27440 this would |
| 550 // trigger a NOTREACHED). | 551 // trigger a NOTREACHED). |
| 551 NavigateToFeedAndValidate(server, kValidFeed0, browser(), true, | 552 NavigateToFeedAndValidate(server, kValidFeed0, browser(), true, |
| 552 "Feed for MyFeedTitle", | 553 "Feed for MyFeedTitle", |
| 553 "Title 1", | 554 "Title 1", |
| 554 "Desc VIDEO", | 555 "Desc VIDEO", |
| 555 "No error"); | 556 "No error"); |
| 556 } | 557 } |
| 557 | 558 |
| 558 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed5) { | 559 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed5) { |
| 559 HTTPTestServer* server = StartHTTPServer(); | 560 net::HTTPTestServer* server = StartHTTPServer(); |
| 560 ASSERT_TRUE(server); | 561 ASSERT_TRUE(server); |
| 561 | 562 |
| 562 ASSERT_TRUE(LoadExtension( | 563 ASSERT_TRUE(LoadExtension( |
| 563 test_data_dir_.AppendASCII("subscribe_page_action"))); | 564 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 564 | 565 |
| 565 // Feed with valid but mostly empty xml. | 566 // Feed with valid but mostly empty xml. |
| 566 NavigateToFeedAndValidate(server, kValidFeed5, browser(), true, | 567 NavigateToFeedAndValidate(server, kValidFeed5, browser(), true, |
| 567 "Feed for Unknown feed name", | 568 "Feed for Unknown feed name", |
| 568 "element 'anchor_0' not found", | 569 "element 'anchor_0' not found", |
| 569 "element 'desc_0' not found", | 570 "element 'desc_0' not found", |
| 570 "This feed contains no entries."); | 571 "This feed contains no entries."); |
| 571 } | 572 } |
| 572 | 573 |
| 573 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed6) { | 574 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed6) { |
| 574 HTTPTestServer* server = StartHTTPServer(); | 575 net::HTTPTestServer* server = StartHTTPServer(); |
| 575 ASSERT_TRUE(server); | 576 ASSERT_TRUE(server); |
| 576 | 577 |
| 577 ASSERT_TRUE(LoadExtension( | 578 ASSERT_TRUE(LoadExtension( |
| 578 test_data_dir_.AppendASCII("subscribe_page_action"))); | 579 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 579 | 580 |
| 580 // Feed that is technically invalid but still parseable. | 581 // Feed that is technically invalid but still parseable. |
| 581 NavigateToFeedAndValidate(server, kValidFeed6, browser(), true, | 582 NavigateToFeedAndValidate(server, kValidFeed6, browser(), true, |
| 582 "Feed for MyFeedTitle", | 583 "Feed for MyFeedTitle", |
| 583 "Title 1", | 584 "Title 1", |
| 584 "Desc", | 585 "Desc", |
| 585 "No error"); | 586 "No error"); |
| 586 } | 587 } |
| 587 | 588 |
| 588 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed1) { | 589 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed1) { |
| 589 HTTPTestServer* server = StartHTTPServer(); | 590 net::HTTPTestServer* server = StartHTTPServer(); |
| 590 ASSERT_TRUE(server); | 591 ASSERT_TRUE(server); |
| 591 | 592 |
| 592 ASSERT_TRUE(LoadExtension( | 593 ASSERT_TRUE(LoadExtension( |
| 593 test_data_dir_.AppendASCII("subscribe_page_action"))); | 594 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 594 | 595 |
| 595 // Try an empty feed. | 596 // Try an empty feed. |
| 596 NavigateToFeedAndValidate(server, kInvalidFeed1, browser(), false, | 597 NavigateToFeedAndValidate(server, kInvalidFeed1, browser(), false, |
| 597 "Feed for Unknown feed name", | 598 "Feed for Unknown feed name", |
| 598 "element 'anchor_0' not found", | 599 "element 'anchor_0' not found", |
| 599 "element 'desc_0' not found", | 600 "element 'desc_0' not found", |
| 600 "This feed contains no entries."); | 601 "This feed contains no entries."); |
| 601 } | 602 } |
| 602 | 603 |
| 603 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed2) { | 604 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed2) { |
| 604 HTTPTestServer* server = StartHTTPServer(); | 605 net::HTTPTestServer* server = StartHTTPServer(); |
| 605 ASSERT_TRUE(server); | 606 ASSERT_TRUE(server); |
| 606 | 607 |
| 607 ASSERT_TRUE(LoadExtension( | 608 ASSERT_TRUE(LoadExtension( |
| 608 test_data_dir_.AppendASCII("subscribe_page_action"))); | 609 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 609 | 610 |
| 610 // Try a garbage feed. | 611 // Try a garbage feed. |
| 611 NavigateToFeedAndValidate(server, kInvalidFeed2, browser(), false, | 612 NavigateToFeedAndValidate(server, kInvalidFeed2, browser(), false, |
| 612 "Feed for Unknown feed name", | 613 "Feed for Unknown feed name", |
| 613 "element 'anchor_0' not found", | 614 "element 'anchor_0' not found", |
| 614 "element 'desc_0' not found", | 615 "element 'desc_0' not found", |
| 615 "This feed contains no entries."); | 616 "This feed contains no entries."); |
| 616 } | 617 } |
| 617 | 618 |
| 618 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed3) { | 619 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed3) { |
| 619 HTTPTestServer* server = StartHTTPServer(); | 620 net::HTTPTestServer* server = StartHTTPServer(); |
| 620 ASSERT_TRUE(server); | 621 ASSERT_TRUE(server); |
| 621 | 622 |
| 622 ASSERT_TRUE(LoadExtension( | 623 ASSERT_TRUE(LoadExtension( |
| 623 test_data_dir_.AppendASCII("subscribe_page_action"))); | 624 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 624 | 625 |
| 625 // Try a feed that doesn't exist. | 626 // Try a feed that doesn't exist. |
| 626 NavigateToFeedAndValidate(server, "foo.xml", browser(), false, | 627 NavigateToFeedAndValidate(server, "foo.xml", browser(), false, |
| 627 "Feed for Unknown feed name", | 628 "Feed for Unknown feed name", |
| 628 "element 'anchor_0' not found", | 629 "element 'anchor_0' not found", |
| 629 "element 'desc_0' not found", | 630 "element 'desc_0' not found", |
| 630 "This feed contains no entries."); | 631 "This feed contains no entries."); |
| 631 } | 632 } |
| 632 | 633 |
| 633 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeedNoLinks) { | 634 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeedNoLinks) { |
| 634 HTTPTestServer* server = StartHTTPServer(); | 635 net::HTTPTestServer* server = StartHTTPServer(); |
| 635 ASSERT_TRUE(server); | 636 ASSERT_TRUE(server); |
| 636 | 637 |
| 637 ASSERT_TRUE(LoadExtension( | 638 ASSERT_TRUE(LoadExtension( |
| 638 test_data_dir_.AppendASCII("subscribe_page_action"))); | 639 test_data_dir_.AppendASCII("subscribe_page_action"))); |
| 639 | 640 |
| 640 // Valid feed but containing no links. | 641 // Valid feed but containing no links. |
| 641 NavigateToFeedAndValidate(server, kValidFeedNoLinks, browser(), true, | 642 NavigateToFeedAndValidate(server, kValidFeedNoLinks, browser(), true, |
| 642 "Feed for MyFeedTitle", | 643 "Feed for MyFeedTitle", |
| 643 "Title with no link", | 644 "Title with no link", |
| 644 "Desc", | 645 "Desc", |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 832 | 833 |
| 833 // If the options page hasn't already come up, wait for it. | 834 // If the options page hasn't already come up, wait for it. |
| 834 if (tab_strip->count() == 1) { | 835 if (tab_strip->count() == 1) { |
| 835 ui_test_utils::WaitForNewTab(browser()); | 836 ui_test_utils::WaitForNewTab(browser()); |
| 836 } | 837 } |
| 837 ASSERT_EQ(2, tab_strip->count()); | 838 ASSERT_EQ(2, tab_strip->count()); |
| 838 | 839 |
| 839 EXPECT_EQ(extension->GetResourceURL("options.html"), | 840 EXPECT_EQ(extension->GetResourceURL("options.html"), |
| 840 tab_strip->GetTabContentsAt(1)->GetURL()); | 841 tab_strip->GetTabContentsAt(1)->GetURL()); |
| 841 } | 842 } |
| OLD | NEW |