Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/component_loader.h" | 5 #include "chrome/browser/extensions/component_loader.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| 11 #include "base/json/json_string_value_serializer.h" | 11 #include "base/json/json_string_value_serializer.h" |
| 12 #include "base/metrics/field_trial.h" | 12 #include "base/metrics/field_trial.h" |
|
robliao
2016/03/02 22:00:52
Haven't tried it, but a few of these includes may
| |
| 13 #include "base/metrics/histogram_macros.h" | 13 #include "base/metrics/histogram_macros.h" |
| 14 #include "base/path_service.h" | 14 #include "base/path_service.h" |
| 15 #include "base/profiler/scoped_profile.h" | 15 #include "base/profiler/scoped_profile.h" |
| 16 #include "base/time/time.h" | 16 #include "base/time/time.h" |
| 17 #include "base/trace_event/trace_event.h" | 17 #include "base/trace_event/trace_event.h" |
| 18 #include "build/build_config.h" | 18 #include "build/build_config.h" |
| 19 #include "chrome/browser/extensions/component_extensions_whitelist/whitelist.h" | 19 #include "chrome/browser/extensions/component_extensions_whitelist/whitelist.h" |
| 20 #include "chrome/browser/extensions/data_deleter.h" | 20 #include "chrome/browser/extensions/data_deleter.h" |
| 21 #include "chrome/browser/extensions/extension_service.h" | 21 #include "chrome/browser/extensions/extension_service.h" |
| 22 #include "chrome/browser/pdf/pdf_extension_util.h" | 22 #include "chrome/browser/pdf/pdf_extension_util.h" |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 376 Add(IDR_IMAGE_LOADER_MANIFEST, | 376 Add(IDR_IMAGE_LOADER_MANIFEST, |
| 377 base::FilePath(FILE_PATH_LITERAL("image_loader"))); | 377 base::FilePath(FILE_PATH_LITERAL("image_loader"))); |
| 378 #endif // defined(IMAGE_LOADER_EXTENSION) | 378 #endif // defined(IMAGE_LOADER_EXTENSION) |
| 379 } | 379 } |
| 380 | 380 |
| 381 void ComponentLoader::AddNetworkSpeechSynthesisExtension() { | 381 void ComponentLoader::AddNetworkSpeechSynthesisExtension() { |
| 382 Add(IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST, | 382 Add(IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST, |
| 383 base::FilePath(FILE_PATH_LITERAL("network_speech_synthesis"))); | 383 base::FilePath(FILE_PATH_LITERAL("network_speech_synthesis"))); |
| 384 } | 384 } |
| 385 | 385 |
| 386 void ComponentLoader::AddGoogleNowExtension() { | |
| 387 #if BUILDFLAG(ENABLE_GOOGLE_NOW) | |
| 388 const char kEnablePrefix[] = "Enable"; | |
| 389 const char kFieldTrialName[] = "GoogleNow"; | |
| 390 std::string enable_prefix(kEnablePrefix); | |
| 391 std::string field_trial_result = | |
| 392 base::FieldTrialList::FindFullName(kFieldTrialName); | |
| 393 | |
| 394 bool enabled_via_field_trial = | |
| 395 field_trial_result.compare(0, enable_prefix.length(), enable_prefix) == 0; | |
| 396 | |
| 397 // Enable the feature on trybots and trunk builds. | |
| 398 bool enabled_via_trunk_build = | |
| 399 chrome::GetChannel() == version_info::Channel::UNKNOWN; | |
| 400 | |
| 401 bool is_authenticated = | |
| 402 SigninManagerFactory::GetForProfile(profile_)->IsAuthenticated(); | |
| 403 | |
| 404 bool enabled = | |
| 405 (enabled_via_field_trial && is_authenticated) || enabled_via_trunk_build; | |
| 406 | |
| 407 #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) | |
| 408 // Don't load if newer trial is running (== new extension id is available). | |
| 409 std::string ignored_extension_id; | |
| 410 if (GetGoogleNowExtensionId(&ignored_extension_id)) { | |
| 411 enabled = false; | |
| 412 } | |
| 413 #endif // defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) | |
| 414 | |
| 415 const int google_now_manifest_id = IDR_GOOGLE_NOW_MANIFEST; | |
| 416 const base::FilePath root_directory = | |
| 417 base::FilePath(FILE_PATH_LITERAL("google_now")); | |
| 418 if (enabled) { | |
| 419 Add(google_now_manifest_id, root_directory); | |
| 420 } else { | |
| 421 DeleteData(google_now_manifest_id, root_directory); | |
| 422 } | |
| 423 #endif // BUILDFLAG(ENABLE_GOOGLE_NOW) | |
| 424 } | |
| 425 | |
| 426 #if defined(OS_CHROMEOS) | 386 #if defined(OS_CHROMEOS) |
| 427 void ComponentLoader::AddChromeVoxExtension( | 387 void ComponentLoader::AddChromeVoxExtension( |
| 428 const base::Closure& done_cb) { | 388 const base::Closure& done_cb) { |
| 429 base::FilePath resources_path; | 389 base::FilePath resources_path; |
| 430 CHECK(PathService::Get(chrome::DIR_RESOURCES, &resources_path)); | 390 CHECK(PathService::Get(chrome::DIR_RESOURCES, &resources_path)); |
| 431 | 391 |
| 432 base::FilePath chromevox_path = | 392 base::FilePath chromevox_path = |
| 433 resources_path.Append(extension_misc::kChromeVoxExtensionPath); | 393 resources_path.Append(extension_misc::kChromeVoxExtensionPath); |
| 434 | 394 |
| 435 const base::FilePath::CharType* manifest_filename = | 395 const base::FilePath::CharType* manifest_filename = |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 626 AddVideoPlayerExtension(); | 586 AddVideoPlayerExtension(); |
| 627 AddAudioPlayerExtension(); | 587 AddAudioPlayerExtension(); |
| 628 AddFileManagerExtension(); | 588 AddFileManagerExtension(); |
| 629 AddGalleryExtension(); | 589 AddGalleryExtension(); |
| 630 AddWebstoreWidgetExtension(); | 590 AddWebstoreWidgetExtension(); |
| 631 | 591 |
| 632 AddHangoutServicesExtension(); | 592 AddHangoutServicesExtension(); |
| 633 AddHotwordAudioVerificationApp(); | 593 AddHotwordAudioVerificationApp(); |
| 634 AddHotwordHelperExtension(); | 594 AddHotwordHelperExtension(); |
| 635 AddImageLoaderExtension(); | 595 AddImageLoaderExtension(); |
| 636 AddGoogleNowExtension(); | |
| 637 | 596 |
| 638 bool install_feedback = enable_background_extensions_during_testing; | 597 bool install_feedback = enable_background_extensions_during_testing; |
| 639 #if defined(GOOGLE_CHROME_BUILD) | 598 #if defined(GOOGLE_CHROME_BUILD) |
| 640 install_feedback = true; | 599 install_feedback = true; |
| 641 #endif // defined(GOOGLE_CHROME_BUILD) | 600 #endif // defined(GOOGLE_CHROME_BUILD) |
| 642 if (install_feedback) | 601 if (install_feedback) |
| 643 Add(IDR_FEEDBACK_MANIFEST, base::FilePath(FILE_PATH_LITERAL("feedback"))); | 602 Add(IDR_FEEDBACK_MANIFEST, base::FilePath(FILE_PATH_LITERAL("feedback"))); |
| 644 | 603 |
| 645 #if defined(ENABLE_SETTINGS_APP) | 604 #if defined(ENABLE_SETTINGS_APP) |
| 646 Add(IDR_SETTINGS_APP_MANIFEST, | 605 Add(IDR_SETTINGS_APP_MANIFEST, |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 708 (command_line->HasSwitch(switches::kTestType) || | 667 (command_line->HasSwitch(switches::kTestType) || |
| 709 command_line->HasSwitch( | 668 command_line->HasSwitch( |
| 710 switches::kDisableComponentExtensionsWithBackgroundPages))) { | 669 switches::kDisableComponentExtensionsWithBackgroundPages))) { |
| 711 return; | 670 return; |
| 712 } | 671 } |
| 713 | 672 |
| 714 AddHangoutServicesExtension(); | 673 AddHangoutServicesExtension(); |
| 715 } | 674 } |
| 716 | 675 |
| 717 void ComponentLoader::DeleteData(int manifest_resource_id, | 676 void ComponentLoader::DeleteData(int manifest_resource_id, |
| 718 const base::FilePath& root_directory) { | 677 const base::FilePath& root_directory) { |
|
robliao
2016/03/02 22:00:52
Might as well remove this as well.
| |
| 719 std::string manifest_contents = | 678 std::string manifest_contents = |
| 720 ResourceBundle::GetSharedInstance().GetRawDataResource( | 679 ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 721 manifest_resource_id).as_string(); | 680 manifest_resource_id).as_string(); |
| 722 base::DictionaryValue* manifest = ParseManifest(manifest_contents); | 681 base::DictionaryValue* manifest = ParseManifest(manifest_contents); |
| 723 if (!manifest) | 682 if (!manifest) |
| 724 return; | 683 return; |
| 725 | 684 |
| 726 ComponentExtensionInfo info(manifest, root_directory); | 685 ComponentExtensionInfo info(manifest, root_directory); |
| 727 std::string error; | 686 std::string error; |
| 728 scoped_refptr<const Extension> extension(CreateExtension(info, &error)); | 687 scoped_refptr<const Extension> extension(CreateExtension(info, &error)); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 792 manifest.release(), | 751 manifest.release(), |
| 793 root_directory, | 752 root_directory, |
| 794 false); | 753 false); |
| 795 CHECK_EQ(extension_id, actual_extension_id); | 754 CHECK_EQ(extension_id, actual_extension_id); |
| 796 if (!done_cb.is_null()) | 755 if (!done_cb.is_null()) |
| 797 done_cb.Run(); | 756 done_cb.Run(); |
| 798 } | 757 } |
| 799 #endif | 758 #endif |
| 800 | 759 |
| 801 } // namespace extensions | 760 } // namespace extensions |
| OLD | NEW |