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

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

Issue 8789018: Revert 113047 - Make ExtensionService use ExtensionSet. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/file_util.h" 5 #include "base/file_util.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/extensions/autoupdate_interceptor.h" 8 #include "chrome/browser/extensions/autoupdate_interceptor.h"
9 #include "chrome/browser/extensions/extension_apitest.h" 9 #include "chrome/browser/extensions/extension_apitest.h"
10 #include "chrome/browser/extensions/extension_browsertest.h" 10 #include "chrome/browser/extensions/extension_browsertest.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { 205 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) {
206 base::TimeTicks start_time = base::TimeTicks::Now(); 206 base::TimeTicks start_time = base::TimeTicks::Now();
207 207
208 ExtensionService* service = browser()->profile()->GetExtensionService(); 208 ExtensionService* service = browser()->profile()->GetExtensionService();
209 209
210 size_t size_before = service->extensions()->size(); 210 size_t size_before = service->extensions()->size();
211 211
212 FilePath base_path = test_data_dir_.AppendASCII("browsertest") 212 FilePath base_path = test_data_dir_.AppendASCII("browsertest")
213 .AppendASCII("crash_44415"); 213 .AppendASCII("crash_44415");
214 // Load extension A. 214 // Load extension A.
215 const Extension* extensionA = LoadExtension(base_path.AppendASCII("ExtA")); 215 ASSERT_TRUE(LoadExtension(base_path.AppendASCII("ExtA")));
216 ASSERT_TRUE(extensionA);
217 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); 216 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1));
218 ASSERT_EQ(size_before + 1, service->extensions()->size()); 217 ASSERT_EQ(size_before + 1, service->extensions()->size());
218 const Extension* extensionA = service->extensions()->at(size_before);
219 219
220 LOG(INFO) << "Load extension A done : " 220 LOG(INFO) << "Load extension A done : "
221 << (base::TimeTicks::Now() - start_time).InMilliseconds() 221 << (base::TimeTicks::Now() - start_time).InMilliseconds()
222 << " ms" << std::flush; 222 << " ms" << std::flush;
223 223
224 // Load extension B. 224 // Load extension B.
225 const Extension* extensionB = LoadExtension(base_path.AppendASCII("ExtB")); 225 ASSERT_TRUE(LoadExtension(base_path.AppendASCII("ExtB")));
226 ASSERT_TRUE(extensionB);
227 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(2)); 226 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(2));
228 ASSERT_EQ(size_before + 2, service->extensions()->size()); 227 ASSERT_EQ(size_before + 2, service->extensions()->size());
228 const Extension* extensionB = service->extensions()->at(size_before + 1);
229 229
230 LOG(INFO) << "Load extension B done : " 230 LOG(INFO) << "Load extension B done : "
231 << (base::TimeTicks::Now() - start_time).InMilliseconds() 231 << (base::TimeTicks::Now() - start_time).InMilliseconds()
232 << " ms" << std::flush; 232 << " ms" << std::flush;
233 233
234 std::string idA = extensionA->id();
235 ReloadExtension(extensionA->id()); 234 ReloadExtension(extensionA->id());
236 // ExtensionA has changed, so refetch it. 235 // ExtensionA has changed, so refetch it.
237 ASSERT_EQ(size_before + 2, service->extensions()->size()); 236 ASSERT_EQ(size_before + 2, service->extensions()->size());
238 extensionA = service->extensions()->GetByID(idA); 237 extensionA = service->extensions()->at(size_before + 1);
239 238
240 LOG(INFO) << "Reload extension A done: " 239 LOG(INFO) << "Reload extension A done: "
241 << (base::TimeTicks::Now() - start_time).InMilliseconds() 240 << (base::TimeTicks::Now() - start_time).InMilliseconds()
242 << " ms" << std::flush; 241 << " ms" << std::flush;
243 242
244 ReloadExtension(extensionB->id()); 243 ReloadExtension(extensionB->id());
245 244
246 LOG(INFO) << "Reload extension B done: " 245 LOG(INFO) << "Reload extension B done: "
247 << (base::TimeTicks::Now() - start_time).InMilliseconds() 246 << (base::TimeTicks::Now() - start_time).InMilliseconds()
248 << " ms" << std::flush; 247 << " ms" << std::flush;
(...skipping 23 matching lines...) Expand all
272 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); 271 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1));
273 } 272 }
274 273
275 // Tests that tooltips of a browser action icon can be specified using UTF8. 274 // Tests that tooltips of a browser action icon can be specified using UTF8.
276 // See http://crbug.com/25349. 275 // See http://crbug.com/25349.
277 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationBrowserAction) { 276 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationBrowserAction) {
278 ExtensionService* service = browser()->profile()->GetExtensionService(); 277 ExtensionService* service = browser()->profile()->GetExtensionService();
279 const size_t size_before = service->extensions()->size(); 278 const size_t size_before = service->extensions()->size();
280 FilePath extension_path(test_data_dir_.AppendASCII("browsertest") 279 FilePath extension_path(test_data_dir_.AppendASCII("browsertest")
281 .AppendASCII("title_localized")); 280 .AppendASCII("title_localized"));
282 const Extension* extension = LoadExtension(extension_path); 281 ASSERT_TRUE(LoadExtension(extension_path));
283 ASSERT_TRUE(extension);
284 282
285 ASSERT_EQ(size_before + 1, service->extensions()->size()); 283 ASSERT_EQ(size_before + 1, service->extensions()->size());
284 const Extension* extension = service->extensions()->at(size_before);
286 285
287 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n browser action").c_str(), 286 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n browser action").c_str(),
288 extension->description().c_str()); 287 extension->description().c_str());
289 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), 288 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(),
290 extension->name().c_str()); 289 extension->name().c_str());
291 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); 290 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents());
292 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), 291 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(),
293 extension->browser_action()->GetTitle(tab_id).c_str()); 292 extension->browser_action()->GetTitle(tab_id).c_str());
294 } 293 }
295 294
296 // Tests that tooltips of a page action icon can be specified using UTF8. 295 // Tests that tooltips of a page action icon can be specified using UTF8.
297 // See http://crbug.com/25349. 296 // See http://crbug.com/25349.
298 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) { 297 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) {
299 ASSERT_TRUE(test_server()->Start()); 298 ASSERT_TRUE(test_server()->Start());
300 299
301 ExtensionService* service = browser()->profile()->GetExtensionService(); 300 ExtensionService* service = browser()->profile()->GetExtensionService();
302 const size_t size_before = service->extensions()->size(); 301 const size_t size_before = service->extensions()->size();
303 302
304 FilePath extension_path(test_data_dir_.AppendASCII("browsertest") 303 FilePath extension_path(test_data_dir_.AppendASCII("browsertest")
305 .AppendASCII("title_localized_pa")); 304 .AppendASCII("title_localized_pa"));
306 const Extension* extension = LoadExtension(extension_path); 305 ASSERT_TRUE(LoadExtension(extension_path));
307 ASSERT_TRUE(extension);
308 306
309 // Any navigation prompts the location bar to load the page action. 307 // Any navigation prompts the location bar to load the page action.
310 GURL url = test_server()->GetURL(kLocalization); 308 GURL url = test_server()->GetURL(kLocalization);
311 ui_test_utils::NavigateToURL(browser(), url); 309 ui_test_utils::NavigateToURL(browser(), url);
312 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); 310 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1));
313 311
314 ASSERT_EQ(size_before + 1, service->extensions()->size()); 312 ASSERT_EQ(size_before + 1, service->extensions()->size());
313 const Extension* extension = service->extensions()->at(size_before);
315 314
316 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(), 315 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(),
317 extension->description().c_str()); 316 extension->description().c_str());
318 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(), 317 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur is my name").c_str(),
319 extension->name().c_str()); 318 extension->name().c_str());
320 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents()); 319 int tab_id = ExtensionTabUtil::GetTabId(browser()->GetSelectedTabContents());
321 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(), 320 EXPECT_STREQ(WideToUTF8(L"Hreggvi\u00F0ur").c_str(),
322 extension->page_action()->GetTitle(tab_id).c_str()); 321 extension->page_action()->GetTitle(tab_id).c_str());
323 } 322 }
324 323
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 return expected_value == returned_value; 380 return expected_value == returned_value;
382 } 381 }
383 382
384 // Navigates to a feed page and, if |sniff_xml_type| is set, wait for the 383 // Navigates to a feed page and, if |sniff_xml_type| is set, wait for the
385 // extension to kick in, detect the feed and redirect to a feed preview page. 384 // extension to kick in, detect the feed and redirect to a feed preview page.
386 // |sniff_xml_type| is generally set to true if the feed is sniffable and false 385 // |sniff_xml_type| is generally set to true if the feed is sniffable and false
387 // for invalid feeds. 386 // for invalid feeds.
388 void NavigateToFeedAndValidate(net::TestServer* server, 387 void NavigateToFeedAndValidate(net::TestServer* server,
389 const std::string& url, 388 const std::string& url,
390 Browser* browser, 389 Browser* browser,
391 std::string extension_id,
392 bool sniff_xml_type, 390 bool sniff_xml_type,
393 const std::string& expected_feed_title, 391 const std::string& expected_feed_title,
394 const std::string& expected_item_title, 392 const std::string& expected_item_title,
395 const std::string& expected_item_desc, 393 const std::string& expected_item_desc,
396 const std::string& expected_error) { 394 const std::string& expected_error) {
397 if (sniff_xml_type) { 395 if (sniff_xml_type) {
398 // TODO(finnur): Implement this is a non-flaky way. 396 // TODO(finnur): Implement this is a non-flaky way.
399 } 397 }
400 398
399 ExtensionService* service = browser->profile()->GetExtensionService();
400 const Extension* extension = service->extensions()->back();
401 std::string id = extension->id();
402
401 // Navigate to the subscribe page directly. 403 // Navigate to the subscribe page directly.
402 ui_test_utils::NavigateToURL(browser, 404 ui_test_utils::NavigateToURL(browser, GetFeedUrl(server, url, true, id));
403 GetFeedUrl(server, url, true, extension_id));
404 405
405 TabContents* tab = browser->GetSelectedTabContents(); 406 TabContents* tab = browser->GetSelectedTabContents();
406 ASSERT_TRUE(ValidatePageElement(tab, 407 ASSERT_TRUE(ValidatePageElement(tab,
407 L"", 408 L"",
408 jscript_feed_title, 409 jscript_feed_title,
409 expected_feed_title)); 410 expected_feed_title));
410 ASSERT_TRUE(ValidatePageElement(tab, 411 ASSERT_TRUE(ValidatePageElement(tab,
411 L"//html/body/div/iframe[1]", 412 L"//html/body/div/iframe[1]",
412 jscript_anchor, 413 jscript_anchor,
413 expected_item_title)); 414 expected_item_title));
414 ASSERT_TRUE(ValidatePageElement(tab, 415 ASSERT_TRUE(ValidatePageElement(tab,
415 L"//html/body/div/iframe[1]", 416 L"//html/body/div/iframe[1]",
416 jscript_desc, 417 jscript_desc,
417 expected_item_desc)); 418 expected_item_desc));
418 ASSERT_TRUE(ValidatePageElement(tab, 419 ASSERT_TRUE(ValidatePageElement(tab,
419 L"//html/body/div/iframe[1]", 420 L"//html/body/div/iframe[1]",
420 jscript_error, 421 jscript_error,
421 expected_error)); 422 expected_error));
422 } 423 }
423 424
424 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed1) { 425 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed1) {
425 ASSERT_TRUE(test_server()->Start()); 426 ASSERT_TRUE(test_server()->Start());
426 427
427 const Extension* extension = LoadExtension( 428 ASSERT_TRUE(LoadExtension(
428 test_data_dir_.AppendASCII("subscribe_page_action")); 429 test_data_dir_.AppendASCII("subscribe_page_action")));
429 ASSERT_TRUE(extension);
430 std::string id = extension->id();
431 430
432 NavigateToFeedAndValidate(test_server(), kValidFeed1, browser(), id, true, 431 NavigateToFeedAndValidate(test_server(), kValidFeed1, browser(), true,
433 "Feed for MyFeedTitle", 432 "Feed for MyFeedTitle",
434 "Title 1", 433 "Title 1",
435 "Desc", 434 "Desc",
436 "No error"); 435 "No error");
437 } 436 }
438 437
439 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed2) { 438 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed2) {
440 ASSERT_TRUE(test_server()->Start()); 439 ASSERT_TRUE(test_server()->Start());
441 440
442 const Extension* extension = LoadExtension( 441 ASSERT_TRUE(LoadExtension(
443 test_data_dir_.AppendASCII("subscribe_page_action")); 442 test_data_dir_.AppendASCII("subscribe_page_action")));
444 ASSERT_TRUE(extension);
445 std::string id = extension->id();
446 443
447 NavigateToFeedAndValidate(test_server(), kValidFeed2, browser(), id, true, 444 NavigateToFeedAndValidate(test_server(), kValidFeed2, browser(), true,
448 "Feed for MyFeed2", 445 "Feed for MyFeed2",
449 "My item title1", 446 "My item title1",
450 "This is a summary.", 447 "This is a summary.",
451 "No error"); 448 "No error");
452 } 449 }
453 450
454 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed3) { 451 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed3) {
455 ASSERT_TRUE(test_server()->Start()); 452 ASSERT_TRUE(test_server()->Start());
456 453
457 const Extension* extension = LoadExtension( 454 ASSERT_TRUE(LoadExtension(
458 test_data_dir_.AppendASCII("subscribe_page_action")); 455 test_data_dir_.AppendASCII("subscribe_page_action")));
459 ASSERT_TRUE(extension);
460 std::string id = extension->id();
461 456
462 NavigateToFeedAndValidate(test_server(), kValidFeed3, browser(), id, true, 457 NavigateToFeedAndValidate(test_server(), kValidFeed3, browser(), true,
463 "Feed for Google Code buglist rss feed", 458 "Feed for Google Code buglist rss feed",
464 "My dear title", 459 "My dear title",
465 "My dear content", 460 "My dear content",
466 "No error"); 461 "No error");
467 } 462 }
468 463
469 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed4) { 464 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed4) {
470 ASSERT_TRUE(test_server()->Start()); 465 ASSERT_TRUE(test_server()->Start());
471 466
472 const Extension* extension = LoadExtension( 467 ASSERT_TRUE(LoadExtension(
473 test_data_dir_.AppendASCII("subscribe_page_action")); 468 test_data_dir_.AppendASCII("subscribe_page_action")));
474 ASSERT_TRUE(extension);
475 std::string id = extension->id();
476 469
477 NavigateToFeedAndValidate(test_server(), kValidFeed4, browser(), id, true, 470 NavigateToFeedAndValidate(test_server(), kValidFeed4, browser(), true,
478 "Feed for Title chars <script> %23 stop", 471 "Feed for Title chars <script> %23 stop",
479 "Title chars %23 stop", 472 "Title chars %23 stop",
480 "My dear content %23 stop", 473 "My dear content %23 stop",
481 "No error"); 474 "No error");
482 } 475 }
483 476
484 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed0) { 477 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed0) {
485 ASSERT_TRUE(test_server()->Start()); 478 ASSERT_TRUE(test_server()->Start());
486 479
487 const Extension* extension = LoadExtension( 480 ASSERT_TRUE(LoadExtension(
488 test_data_dir_.AppendASCII("subscribe_page_action")); 481 test_data_dir_.AppendASCII("subscribe_page_action")));
489 ASSERT_TRUE(extension);
490 std::string id = extension->id();
491 482
492 // Try a feed with a link with an onclick handler (before r27440 this would 483 // Try a feed with a link with an onclick handler (before r27440 this would
493 // trigger a NOTREACHED). 484 // trigger a NOTREACHED).
494 NavigateToFeedAndValidate(test_server(), kValidFeed0, browser(), id, true, 485 NavigateToFeedAndValidate(test_server(), kValidFeed0, browser(), true,
495 "Feed for MyFeedTitle", 486 "Feed for MyFeedTitle",
496 "Title 1", 487 "Title 1",
497 "Desc VIDEO", 488 "Desc VIDEO",
498 "No error"); 489 "No error");
499 } 490 }
500 491
501 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed5) { 492 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed5) {
502 ASSERT_TRUE(test_server()->Start()); 493 ASSERT_TRUE(test_server()->Start());
503 494
504 const Extension* extension = LoadExtension( 495 ASSERT_TRUE(LoadExtension(
505 test_data_dir_.AppendASCII("subscribe_page_action")); 496 test_data_dir_.AppendASCII("subscribe_page_action")));
506 ASSERT_TRUE(extension);
507 std::string id = extension->id();
508 497
509 // Feed with valid but mostly empty xml. 498 // Feed with valid but mostly empty xml.
510 NavigateToFeedAndValidate(test_server(), kValidFeed5, browser(), id, true, 499 NavigateToFeedAndValidate(test_server(), kValidFeed5, browser(), true,
511 "Feed for Unknown feed name", 500 "Feed for Unknown feed name",
512 "element 'anchor_0' not found", 501 "element 'anchor_0' not found",
513 "element 'desc_0' not found", 502 "element 'desc_0' not found",
514 "This feed contains no entries."); 503 "This feed contains no entries.");
515 } 504 }
516 505
517 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed6) { 506 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeed6) {
518 ASSERT_TRUE(test_server()->Start()); 507 ASSERT_TRUE(test_server()->Start());
519 508
520 const Extension* extension = LoadExtension( 509 ASSERT_TRUE(LoadExtension(
521 test_data_dir_.AppendASCII("subscribe_page_action")); 510 test_data_dir_.AppendASCII("subscribe_page_action")));
522 ASSERT_TRUE(extension);
523 std::string id = extension->id();
524 511
525 // Feed that is technically invalid but still parseable. 512 // Feed that is technically invalid but still parseable.
526 NavigateToFeedAndValidate(test_server(), kValidFeed6, browser(), id, true, 513 NavigateToFeedAndValidate(test_server(), kValidFeed6, browser(), true,
527 "Feed for MyFeedTitle", 514 "Feed for MyFeedTitle",
528 "Title 1", 515 "Title 1",
529 "Desc", 516 "Desc",
530 "No error"); 517 "No error");
531 } 518 }
532 519
533 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed1) { 520 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed1) {
534 ASSERT_TRUE(test_server()->Start()); 521 ASSERT_TRUE(test_server()->Start());
535 522
536 const Extension* extension = LoadExtension( 523 ASSERT_TRUE(LoadExtension(
537 test_data_dir_.AppendASCII("subscribe_page_action")); 524 test_data_dir_.AppendASCII("subscribe_page_action")));
538 ASSERT_TRUE(extension);
539 std::string id = extension->id();
540 525
541 // Try an empty feed. 526 // Try an empty feed.
542 NavigateToFeedAndValidate(test_server(), kInvalidFeed1, browser(), id, false, 527 NavigateToFeedAndValidate(test_server(), kInvalidFeed1, browser(), false,
543 "Feed for Unknown feed name", 528 "Feed for Unknown feed name",
544 "element 'anchor_0' not found", 529 "element 'anchor_0' not found",
545 "element 'desc_0' not found", 530 "element 'desc_0' not found",
546 "This feed contains no entries."); 531 "This feed contains no entries.");
547 } 532 }
548 533
549 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed2) { 534 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed2) {
550 ASSERT_TRUE(test_server()->Start()); 535 ASSERT_TRUE(test_server()->Start());
551 536
552 const Extension* extension = LoadExtension( 537 ASSERT_TRUE(LoadExtension(
553 test_data_dir_.AppendASCII("subscribe_page_action")); 538 test_data_dir_.AppendASCII("subscribe_page_action")));
554 ASSERT_TRUE(extension);
555 std::string id = extension->id();
556 539
557 // Try a garbage feed. 540 // Try a garbage feed.
558 NavigateToFeedAndValidate(test_server(), kInvalidFeed2, browser(), id, false, 541 NavigateToFeedAndValidate(test_server(), kInvalidFeed2, browser(), false,
559 "Feed for Unknown feed name", 542 "Feed for Unknown feed name",
560 "element 'anchor_0' not found", 543 "element 'anchor_0' not found",
561 "element 'desc_0' not found", 544 "element 'desc_0' not found",
562 "This feed contains no entries."); 545 "This feed contains no entries.");
563 } 546 }
564 547
565 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed3) { 548 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed3) {
566 ASSERT_TRUE(test_server()->Start()); 549 ASSERT_TRUE(test_server()->Start());
567 550
568 const Extension* extension = LoadExtension( 551 ASSERT_TRUE(LoadExtension(
569 test_data_dir_.AppendASCII("subscribe_page_action")); 552 test_data_dir_.AppendASCII("subscribe_page_action")));
570 ASSERT_TRUE(extension);
571 std::string id = extension->id();
572 553
573 // Try a feed that doesn't exist. 554 // Try a feed that doesn't exist.
574 NavigateToFeedAndValidate(test_server(), "foo.xml", browser(), id, false, 555 NavigateToFeedAndValidate(test_server(), "foo.xml", browser(), false,
575 "Feed for Unknown feed name", 556 "Feed for Unknown feed name",
576 "element 'anchor_0' not found", 557 "element 'anchor_0' not found",
577 "element 'desc_0' not found", 558 "element 'desc_0' not found",
578 "This feed contains no entries."); 559 "This feed contains no entries.");
579 } 560 }
580 561
581 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed4) { 562 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedInvalidFeed4) {
582 ASSERT_TRUE(test_server()->Start()); 563 ASSERT_TRUE(test_server()->Start());
583 564
584 const Extension* extension = LoadExtension( 565 ASSERT_TRUE(LoadExtension(
585 test_data_dir_.AppendASCII("subscribe_page_action")); 566 test_data_dir_.AppendASCII("subscribe_page_action")));
586 ASSERT_TRUE(extension);
587 std::string id = extension->id();
588 567
589 // subscribe.js shouldn't double-decode the URL passed in. Otherwise feed 568 // subscribe.js shouldn't double-decode the URL passed in. Otherwise feed
590 // links such as http://search.twitter.com/search.atom?lang=en&q=%23chrome 569 // links such as http://search.twitter.com/search.atom?lang=en&q=%23chrome
591 // will result in no feed being downloaded because %23 gets decoded to # and 570 // will result in no feed being downloaded because %23 gets decoded to # and
592 // therefore #chrome is not treated as part of the Twitter query. This test 571 // therefore #chrome is not treated as part of the Twitter query. This test
593 // uses an underscore instead of a hash, but the principle is the same. If 572 // uses an underscore instead of a hash, but the principle is the same. If
594 // we start erroneously double decoding again, the path (and the feed) will 573 // we start erroneously double decoding again, the path (and the feed) will
595 // become valid resulting in a failure for this test. 574 // become valid resulting in a failure for this test.
596 NavigateToFeedAndValidate( 575 NavigateToFeedAndValidate(test_server(), kFeedTripleEncoded, browser(), true,
597 test_server(), kFeedTripleEncoded, browser(), id, true, 576 "Feed for Unknown feed name",
598 "Feed for Unknown feed name", 577 "element 'anchor_0' not found",
599 "element 'anchor_0' not found", 578 "element 'desc_0' not found",
600 "element 'desc_0' not found", 579 "This feed contains no entries.");
601 "This feed contains no entries.");
602 } 580 }
603 581
604 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeedNoLinks) { 582 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, ParseFeedValidFeedNoLinks) {
605 ASSERT_TRUE(test_server()->Start()); 583 ASSERT_TRUE(test_server()->Start());
606 584
607 const Extension* extension = LoadExtension( 585 ASSERT_TRUE(LoadExtension(
608 test_data_dir_.AppendASCII("subscribe_page_action")); 586 test_data_dir_.AppendASCII("subscribe_page_action")));
609 ASSERT_TRUE(extension);
610 std::string id = extension->id();
611 587
612 // Valid feed but containing no links. 588 // Valid feed but containing no links.
613 NavigateToFeedAndValidate( 589 NavigateToFeedAndValidate(test_server(), kValidFeedNoLinks, browser(), true,
614 test_server(), kValidFeedNoLinks, browser(), id, true, 590 "Feed for MyFeedTitle",
615 "Feed for MyFeedTitle", 591 "Title with no link",
616 "Title with no link", 592 "Desc",
617 "Desc", 593 "No error");
618 "No error");
619 } 594 }
620 595
621 // Tests that an error raised during an async function still fires 596 // Tests that an error raised during an async function still fires
622 // the callback, but sets chrome.extension.lastError. 597 // the callback, but sets chrome.extension.lastError.
623 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, LastError) { 598 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, LastError) {
624 ASSERT_TRUE(LoadExtension( 599 ASSERT_TRUE(LoadExtension(
625 test_data_dir_.AppendASCII("browsertest").AppendASCII("last_error"))); 600 test_data_dir_.AppendASCII("browsertest").AppendASCII("last_error")));
626 601
627 // Get the ExtensionHost that is hosting our background page. 602 // Get the ExtensionHost that is hosting our background page.
628 ExtensionProcessManager* manager = 603 ExtensionProcessManager* manager =
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 715
741 // With no extensions, the plugin should not be loaded. 716 // With no extensions, the plugin should not be loaded.
742 bool result = false; 717 bool result = false;
743 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 718 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
744 tab->render_view_host(), L"", L"testPluginWorks()", &result)); 719 tab->render_view_host(), L"", L"testPluginWorks()", &result));
745 EXPECT_FALSE(result); 720 EXPECT_FALSE(result);
746 721
747 ExtensionService* service = browser()->profile()->GetExtensionService(); 722 ExtensionService* service = browser()->profile()->GetExtensionService();
748 service->set_show_extensions_prompts(false); 723 service->set_show_extensions_prompts(false);
749 const size_t size_before = service->extensions()->size(); 724 const size_t size_before = service->extensions()->size();
750 const Extension* extension = LoadExtension(extension_dir); 725 ASSERT_TRUE(LoadExtension(extension_dir));
751 ASSERT_TRUE(extension);
752 EXPECT_EQ(size_before + 1, service->extensions()->size()); 726 EXPECT_EQ(size_before + 1, service->extensions()->size());
753 // Now the plugin should be in the cache, but we have to reload the page for 727 // Now the plugin should be in the cache, but we have to reload the page for
754 // it to work. 728 // it to work.
755 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 729 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
756 tab->render_view_host(), L"", L"testPluginWorks()", &result)); 730 tab->render_view_host(), L"", L"testPluginWorks()", &result));
757 EXPECT_FALSE(result); 731 EXPECT_FALSE(result);
758 { 732 {
759 ui_test_utils::WindowedNotificationObserver observer( 733 ui_test_utils::WindowedNotificationObserver observer(
760 content::NOTIFICATION_LOAD_STOP, 734 content::NOTIFICATION_LOAD_STOP,
761 content::Source<NavigationController>( 735 content::Source<NavigationController>(
762 &browser()->GetSelectedTabContentsWrapper()->controller())); 736 &browser()->GetSelectedTabContentsWrapper()->controller()));
763 browser()->Reload(CURRENT_TAB); 737 browser()->Reload(CURRENT_TAB);
764 observer.Wait(); 738 observer.Wait();
765 } 739 }
766 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 740 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
767 tab->render_view_host(), L"", L"testPluginWorks()", &result)); 741 tab->render_view_host(), L"", L"testPluginWorks()", &result));
768 EXPECT_TRUE(result); 742 EXPECT_TRUE(result);
769 743
770 EXPECT_EQ(size_before + 1, service->extensions()->size()); 744 EXPECT_EQ(size_before + 1, service->extensions()->size());
771 UnloadExtension(extension->id()); 745 UnloadExtension(service->extensions()->at(size_before)->id());
772 EXPECT_EQ(size_before, service->extensions()->size()); 746 EXPECT_EQ(size_before, service->extensions()->size());
773 747
774 // Now the plugin should be unloaded, and the page should be broken. 748 // Now the plugin should be unloaded, and the page should be broken.
775 749
776 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 750 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
777 tab->render_view_host(), L"", L"testPluginWorks()", &result)); 751 tab->render_view_host(), L"", L"testPluginWorks()", &result));
778 EXPECT_FALSE(result); 752 EXPECT_FALSE(result);
779 753
780 // If we reload the extension and page, it should work again. 754 // If we reload the extension and page, it should work again.
781 755
(...skipping 21 matching lines...) Expand all
803 #endif 777 #endif
804 778
805 // Tests that private extension plugins are only visible to the extension. 779 // Tests that private extension plugins are only visible to the extension.
806 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginPrivate) { 780 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginPrivate) {
807 FilePath extension_dir = 781 FilePath extension_dir =
808 test_data_dir_.AppendASCII("uitest").AppendASCII("plugins_private"); 782 test_data_dir_.AppendASCII("uitest").AppendASCII("plugins_private");
809 783
810 ExtensionService* service = browser()->profile()->GetExtensionService(); 784 ExtensionService* service = browser()->profile()->GetExtensionService();
811 service->set_show_extensions_prompts(false); 785 service->set_show_extensions_prompts(false);
812 const size_t size_before = service->extensions()->size(); 786 const size_t size_before = service->extensions()->size();
813 const Extension* extension = LoadExtension(extension_dir); 787 ASSERT_TRUE(LoadExtension(extension_dir));
814 ASSERT_TRUE(extension);
815 EXPECT_EQ(size_before + 1, service->extensions()->size()); 788 EXPECT_EQ(size_before + 1, service->extensions()->size());
816 789
817 // Load the test page through the extension URL, and the plugin should work. 790 // Load the test page through the extension URL, and the plugin should work.
791 const Extension* extension = service->extensions()->back();
818 ui_test_utils::NavigateToURL(browser(), 792 ui_test_utils::NavigateToURL(browser(),
819 extension->GetResourceURL("test.html")); 793 extension->GetResourceURL("test.html"));
820 TabContents* tab = browser()->GetSelectedTabContents(); 794 TabContents* tab = browser()->GetSelectedTabContents();
821 bool result = false; 795 bool result = false;
822 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 796 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
823 tab->render_view_host(), L"", L"testPluginWorks()", &result)); 797 tab->render_view_host(), L"", L"testPluginWorks()", &result));
824 // We don't allow extension plugins to run on ChromeOS. 798 // We don't allow extension plugins to run on ChromeOS.
825 #if defined(OS_CHROMEOS) 799 #if defined(OS_CHROMEOS)
826 EXPECT_FALSE(result); 800 EXPECT_FALSE(result);
827 #else 801 #else
(...skipping 16 matching lines...) Expand all
844 L" null).snapshotItem(0);" 818 L" null).snapshotItem(0);"
845 L" button.click();" 819 L" button.click();"
846 L"})();"; 820 L"})();";
847 821
848 // Test that an extension with an options page makes an 'Options' button appear 822 // Test that an extension with an options page makes an 'Options' button appear
849 // on chrome://extensions, and that clicking the button opens a new tab with the 823 // on chrome://extensions, and that clicking the button opens a new tab with the
850 // extension's options page. 824 // extension's options page.
851 // Disabled. See http://crbug.com/26948 for details. 825 // Disabled. See http://crbug.com/26948 for details.
852 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_OptionsPage) { 826 IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_OptionsPage) {
853 // Install an extension with an options page. 827 // Install an extension with an options page.
854 const Extension* extension = 828 ASSERT_TRUE(InstallExtension(test_data_dir_.AppendASCII("options.crx"), 1));
855 InstallExtension(test_data_dir_.AppendASCII("options.crx"), 1);
856 ASSERT_TRUE(extension);
857 ExtensionService* service = browser()->profile()->GetExtensionService(); 829 ExtensionService* service = browser()->profile()->GetExtensionService();
858 ASSERT_EQ(1u, service->extensions()->size()); 830 const ExtensionList* extensions = service->extensions();
831 ASSERT_EQ(1u, extensions->size());
832 const Extension* extension = extensions->at(0);
859 833
860 // Go to the Extension Settings page and click the Options button. 834 // Go to the Extension Settings page and click the Options button.
861 ui_test_utils::NavigateToURL( 835 ui_test_utils::NavigateToURL(
862 browser(), GURL(std::string(chrome::kChromeUISettingsURL) + 836 browser(), GURL(std::string(chrome::kChromeUISettingsURL) +
863 chrome::kExtensionsSubPage)); 837 chrome::kExtensionsSubPage));
864 TabStripModel* tab_strip = browser()->tabstrip_model(); 838 TabStripModel* tab_strip = browser()->tabstrip_model();
865 ASSERT_TRUE(ui_test_utils::ExecuteJavaScript( 839 ASSERT_TRUE(ui_test_utils::ExecuteJavaScript(
866 browser()->GetSelectedTabContents()->render_view_host(), L"", 840 browser()->GetSelectedTabContents()->render_view_host(), L"",
867 jscript_click_option_button)); 841 jscript_click_option_button));
868 842
869 // If the options page hasn't already come up, wait for it. 843 // If the options page hasn't already come up, wait for it.
870 if (tab_strip->count() == 1) { 844 if (tab_strip->count() == 1) {
871 ui_test_utils::WaitForNewTab(browser()); 845 ui_test_utils::WaitForNewTab(browser());
872 } 846 }
873 ASSERT_EQ(2, tab_strip->count()); 847 ASSERT_EQ(2, tab_strip->count());
874 848
875 EXPECT_EQ(extension->GetResourceURL("options.html"), 849 EXPECT_EQ(extension->GetResourceURL("options.html"),
876 tab_strip->GetTabContentsAt(1)->tab_contents()->GetURL()); 850 tab_strip->GetTabContentsAt(1)->tab_contents()->GetURL());
877 } 851 }
878 852
879 //============================================================================== 853 //==============================================================================
880 // STOP! Please do not add any more random-ass tests here. Create new files for 854 // STOP! Please do not add any more random-ass tests here. Create new files for
881 // your tests grouped by functionality. Also, you should strongly consider using 855 // your tests grouped by functionality. Also, you should strongly consider using
882 // ExtensionAPITest if possible. 856 // ExtensionAPITest if possible.
883 //============================================================================== 857 //==============================================================================
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_browsertest.cc ('k') | chrome/browser/extensions/extension_context_menu_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698