OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/chromeos/file_manager/file_tasks.h" | 5 #include "chrome/browser/chromeos/file_manager/file_tasks.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 base::CommandLine command_line_; | 454 base::CommandLine command_line_; |
455 ExtensionService* extension_service_; // Owned by test_profile_; | 455 ExtensionService* extension_service_; // Owned by test_profile_; |
456 }; | 456 }; |
457 | 457 |
458 // The basic logic is similar to a test case for FindDriveAppTasks above. | 458 // The basic logic is similar to a test case for FindDriveAppTasks above. |
459 TEST_F(FileManagerFileTasksComplexTest, FindFileHandlerTasks) { | 459 TEST_F(FileManagerFileTasksComplexTest, FindFileHandlerTasks) { |
460 // Random IDs generated by | 460 // Random IDs generated by |
461 // % ruby -le 'print (0...32).to_a.map{(?a + rand(16)).chr}.join' | 461 // % ruby -le 'print (0...32).to_a.map{(?a + rand(16)).chr}.join' |
462 const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; | 462 const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; |
463 const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; | 463 const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; |
464 const char kEphemeralId[] = "opoomfdlbjcbjinalcjdjfoiikdeaoel"; | |
465 | 464 |
466 // Foo.app can handle "text/plain" and "text/html". | 465 // Foo.app can handle "text/plain" and "text/html". |
467 extensions::ExtensionBuilder foo_app; | 466 extensions::ExtensionBuilder foo_app; |
468 foo_app.SetManifest(extensions::DictionaryBuilder() | 467 foo_app.SetManifest(extensions::DictionaryBuilder() |
469 .Set("name", "Foo") | 468 .Set("name", "Foo") |
470 .Set("version", "1.0.0") | 469 .Set("version", "1.0.0") |
471 .Set("manifest_version", 2) | 470 .Set("manifest_version", 2) |
472 .Set("app", | 471 .Set("app", |
473 extensions::DictionaryBuilder() | 472 extensions::DictionaryBuilder() |
474 .Set("background", | 473 .Set("background", |
(...skipping 30 matching lines...) Expand all Loading... |
505 extensions::DictionaryBuilder() | 504 extensions::DictionaryBuilder() |
506 .Set("text", | 505 .Set("text", |
507 extensions::DictionaryBuilder() | 506 extensions::DictionaryBuilder() |
508 .Set("title", "Text") | 507 .Set("title", "Text") |
509 .Set("types", | 508 .Set("types", |
510 extensions::ListBuilder() | 509 extensions::ListBuilder() |
511 .Append("text/plain"))))); | 510 .Append("text/plain"))))); |
512 bar_app.SetID(kBarId); | 511 bar_app.SetID(kBarId); |
513 extension_service_->AddExtension(bar_app.Build().get()); | 512 extension_service_->AddExtension(bar_app.Build().get()); |
514 | 513 |
515 // Ephemeral.app is an ephemeral app that can handle "text/plain". | |
516 // It should not ever be found as ephemeral apps cannot be file handlers. | |
517 extensions::ExtensionBuilder ephemeral_app; | |
518 ephemeral_app.SetManifest( | |
519 extensions::DictionaryBuilder() | |
520 .Set("name", "Ephemeral") | |
521 .Set("version", "1.0.0") | |
522 .Set("manifest_version", 2) | |
523 .Set("app", | |
524 extensions::DictionaryBuilder().Set( | |
525 "background", | |
526 extensions::DictionaryBuilder().Set( | |
527 "scripts", | |
528 extensions::ListBuilder().Append("background.js")))) | |
529 .Set("file_handlers", | |
530 extensions::DictionaryBuilder().Set( | |
531 "text", | |
532 extensions::DictionaryBuilder().Set("title", "Text").Set( | |
533 "types", | |
534 extensions::ListBuilder().Append("text/plain"))))); | |
535 ephemeral_app.SetID(kEphemeralId); | |
536 scoped_refptr<extensions::Extension> built_ephemeral_app( | |
537 ephemeral_app.Build()); | |
538 extension_service_->AddExtension(built_ephemeral_app.get()); | |
539 extensions::ExtensionPrefs* extension_prefs = | |
540 extensions::ExtensionPrefs::Get(&test_profile_); | |
541 extension_prefs->OnExtensionInstalled(built_ephemeral_app.get(), | |
542 extensions::Extension::ENABLED, | |
543 syncer::StringOrdinal(), | |
544 extensions::kInstallFlagIsEphemeral, | |
545 std::string()); | |
546 | |
547 // Find apps for a "text/plain" file. Foo.app and Bar.app should be found. | 514 // Find apps for a "text/plain" file. Foo.app and Bar.app should be found. |
548 PathAndMimeTypeSet path_mime_set; | 515 PathAndMimeTypeSet path_mime_set; |
549 path_mime_set.insert( | 516 path_mime_set.insert( |
550 std::make_pair( | 517 std::make_pair( |
551 drive::util::GetDriveMountPointPath(&test_profile_).AppendASCII( | 518 drive::util::GetDriveMountPointPath(&test_profile_).AppendASCII( |
552 "foo.txt"), | 519 "foo.txt"), |
553 "text/plain")); | 520 "text/plain")); |
554 | 521 |
555 std::vector<FullTaskDescriptor> tasks; | 522 std::vector<FullTaskDescriptor> tasks; |
556 FindFileHandlerTasks(&test_profile_, path_mime_set, &tasks); | 523 FindFileHandlerTasks(&test_profile_, path_mime_set, &tasks); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 FindFileHandlerTasks(&test_profile_, path_mime_set, &tasks); | 558 FindFileHandlerTasks(&test_profile_, path_mime_set, &tasks); |
592 // Confirm no tasks are found. | 559 // Confirm no tasks are found. |
593 ASSERT_TRUE(tasks.empty()); | 560 ASSERT_TRUE(tasks.empty()); |
594 } | 561 } |
595 | 562 |
596 // The basic logic is similar to a test case for FindDriveAppTasks above. | 563 // The basic logic is similar to a test case for FindDriveAppTasks above. |
597 TEST_F(FileManagerFileTasksComplexTest, FindFileBrowserHandlerTasks) { | 564 TEST_F(FileManagerFileTasksComplexTest, FindFileBrowserHandlerTasks) { |
598 // Copied from FindFileHandlerTasks test above. | 565 // Copied from FindFileHandlerTasks test above. |
599 const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; | 566 const char kFooId[] = "hhgbjpmdppecanaaogonaigmmifgpaph"; |
600 const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; | 567 const char kBarId[] = "odlhccgofgkadkkhcmhgnhgahonahoca"; |
601 const char kEphemeralId[] = "opoomfdlbjcbjinalcjdjfoiikdeaoel"; | |
602 | 568 |
603 // Foo.app can handle ".txt" and ".html". | 569 // Foo.app can handle ".txt" and ".html". |
604 // This one is an extension, and has "file_browser_handlers" | 570 // This one is an extension, and has "file_browser_handlers" |
605 extensions::ExtensionBuilder foo_app; | 571 extensions::ExtensionBuilder foo_app; |
606 foo_app.SetManifest( | 572 foo_app.SetManifest( |
607 extensions::DictionaryBuilder() | 573 extensions::DictionaryBuilder() |
608 .Set("name", "Foo") | 574 .Set("name", "Foo") |
609 .Set("version", "1.0.0") | 575 .Set("version", "1.0.0") |
610 .Set("manifest_version", 2) | 576 .Set("manifest_version", 2) |
611 .Set("permissions", | 577 .Set("permissions", |
(...skipping 22 matching lines...) Expand all Loading... |
634 .Set("file_browser_handlers", | 600 .Set("file_browser_handlers", |
635 extensions::ListBuilder().Append( | 601 extensions::ListBuilder().Append( |
636 extensions::DictionaryBuilder() | 602 extensions::DictionaryBuilder() |
637 .Set("id", "open") | 603 .Set("id", "open") |
638 .Set("default_title", "open") | 604 .Set("default_title", "open") |
639 .Set("file_filters", extensions::ListBuilder().Append( | 605 .Set("file_filters", extensions::ListBuilder().Append( |
640 "filesystem:*.txt"))))); | 606 "filesystem:*.txt"))))); |
641 bar_app.SetID(kBarId); | 607 bar_app.SetID(kBarId); |
642 extension_service_->AddExtension(bar_app.Build().get()); | 608 extension_service_->AddExtension(bar_app.Build().get()); |
643 | 609 |
644 // Ephemeral.app is an ephemeral app that can handle ".txt". | |
645 // It should not ever be found as ephemeral apps cannot be file browser | |
646 // handlers. | |
647 extensions::ExtensionBuilder ephemeral_app; | |
648 ephemeral_app.SetManifest( | |
649 extensions::DictionaryBuilder() | |
650 .Set("name", "Ephemeral") | |
651 .Set("version", "1.0.0") | |
652 .Set("manifest_version", 2) | |
653 .Set("permissions", | |
654 extensions::ListBuilder().Append("fileBrowserHandler")) | |
655 .Set("file_browser_handlers", | |
656 extensions::ListBuilder().Append( | |
657 extensions::DictionaryBuilder() | |
658 .Set("id", "open") | |
659 .Set("default_title", "open") | |
660 .Set("file_filters", extensions::ListBuilder().Append( | |
661 "filesystem:*.txt"))))); | |
662 ephemeral_app.SetID(kEphemeralId); | |
663 scoped_refptr<extensions::Extension> built_ephemeral_app( | |
664 ephemeral_app.Build()); | |
665 extension_service_->AddExtension(built_ephemeral_app.get()); | |
666 extensions::ExtensionPrefs* extension_prefs = | |
667 extensions::ExtensionPrefs::Get(&test_profile_); | |
668 extension_prefs->OnExtensionInstalled(built_ephemeral_app.get(), | |
669 extensions::Extension::ENABLED, | |
670 syncer::StringOrdinal(), | |
671 extensions::kInstallFlagIsEphemeral, | |
672 std::string()); | |
673 | |
674 // Find apps for a ".txt" file. Foo.app and Bar.app should be found. | 610 // Find apps for a ".txt" file. Foo.app and Bar.app should be found. |
675 std::vector<GURL> file_urls; | 611 std::vector<GURL> file_urls; |
676 file_urls.push_back(GURL("filesystem:chrome-extension://id/dir/foo.txt")); | 612 file_urls.push_back(GURL("filesystem:chrome-extension://id/dir/foo.txt")); |
677 | 613 |
678 std::vector<FullTaskDescriptor> tasks; | 614 std::vector<FullTaskDescriptor> tasks; |
679 FindFileBrowserHandlerTasks(&test_profile_, file_urls, &tasks); | 615 FindFileBrowserHandlerTasks(&test_profile_, file_urls, &tasks); |
680 ASSERT_EQ(2U, tasks.size()); | 616 ASSERT_EQ(2U, tasks.size()); |
681 // Sort the app IDs, as the order is not guaranteed. | 617 // Sort the app IDs, as the order is not guaranteed. |
682 std::vector<std::string> app_ids; | 618 std::vector<std::string> app_ids; |
683 app_ids.push_back(tasks[0].task_descriptor().app_id); | 619 app_ids.push_back(tasks[0].task_descriptor().app_id); |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 // treated as non-generic handler. | 961 // treated as non-generic handler. |
1026 EXPECT_EQ("Baz", jpg_result[1].task_title()); | 962 EXPECT_EQ("Baz", jpg_result[1].task_title()); |
1027 EXPECT_FALSE(jpg_result[1].is_generic_file_handler()); | 963 EXPECT_FALSE(jpg_result[1].is_generic_file_handler()); |
1028 // Qux app provides a handler for all types. | 964 // Qux app provides a handler for all types. |
1029 EXPECT_EQ("Qux", jpg_result[2].task_title()); | 965 EXPECT_EQ("Qux", jpg_result[2].task_title()); |
1030 EXPECT_TRUE(jpg_result[2].is_generic_file_handler()); | 966 EXPECT_TRUE(jpg_result[2].is_generic_file_handler()); |
1031 } | 967 } |
1032 | 968 |
1033 } // namespace file_tasks | 969 } // namespace file_tasks |
1034 } // namespace file_manager. | 970 } // namespace file_manager. |
OLD | NEW |