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" |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "extensions/common/constants.h" | 37 #include "extensions/common/constants.h" |
38 #include "extensions/common/extension.h" | 38 #include "extensions/common/extension.h" |
39 #include "extensions/common/extension_l10n_util.h" | 39 #include "extensions/common/extension_l10n_util.h" |
40 #include "extensions/common/file_util.h" | 40 #include "extensions/common/file_util.h" |
41 #include "extensions/common/manifest_constants.h" | 41 #include "extensions/common/manifest_constants.h" |
42 #include "ui/base/l10n/l10n_util.h" | 42 #include "ui/base/l10n/l10n_util.h" |
43 #include "ui/base/resource/resource_bundle.h" | 43 #include "ui/base/resource/resource_bundle.h" |
44 | 44 |
45 #if defined(OS_CHROMEOS) | 45 #if defined(OS_CHROMEOS) |
46 #include "ash/common/system/chromeos/devicetype_utils.h" | 46 #include "ash/common/system/chromeos/devicetype_utils.h" |
47 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" | |
48 #include "chromeos/chromeos_switches.h" | 47 #include "chromeos/chromeos_switches.h" |
49 #include "components/chrome_apps/grit/chrome_apps_resources.h" | 48 #include "components/chrome_apps/grit/chrome_apps_resources.h" |
50 #include "components/user_manager/user_manager.h" | 49 #include "components/user_manager/user_manager.h" |
51 #include "content/public/browser/site_instance.h" | 50 #include "content/public/browser/site_instance.h" |
52 #include "content/public/browser/storage_partition.h" | 51 #include "content/public/browser/storage_partition.h" |
53 #include "extensions/browser/extensions_browser_client.h" | 52 #include "extensions/browser/extensions_browser_client.h" |
54 #include "storage/browser/fileapi/file_system_context.h" | 53 #include "storage/browser/fileapi/file_system_context.h" |
55 #include "ui/file_manager/grit/file_manager_resources.h" | 54 #include "ui/file_manager/grit/file_manager_resources.h" |
56 #include "ui/keyboard/grit/keyboard_resources.h" | 55 #include "ui/keyboard/grit/keyboard_resources.h" |
57 #include "ui/keyboard/keyboard_util.h" | 56 #include "ui/keyboard/keyboard_util.h" |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 base::FilePath(FILE_PATH_LITERAL("image_loader"))); | 366 base::FilePath(FILE_PATH_LITERAL("image_loader"))); |
368 #endif // defined(IMAGE_LOADER_EXTENSION) | 367 #endif // defined(IMAGE_LOADER_EXTENSION) |
369 } | 368 } |
370 | 369 |
371 void ComponentLoader::AddNetworkSpeechSynthesisExtension() { | 370 void ComponentLoader::AddNetworkSpeechSynthesisExtension() { |
372 Add(IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST, | 371 Add(IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST, |
373 base::FilePath(FILE_PATH_LITERAL("network_speech_synthesis"))); | 372 base::FilePath(FILE_PATH_LITERAL("network_speech_synthesis"))); |
374 } | 373 } |
375 | 374 |
376 #if defined(OS_CHROMEOS) | 375 #if defined(OS_CHROMEOS) |
377 void ComponentLoader::AddChromeVoxExtension( | |
378 const base::Closure& done_cb) { | |
379 base::FilePath resources_path; | |
380 CHECK(PathService::Get(chrome::DIR_RESOURCES, &resources_path)); | |
381 | |
382 base::FilePath chromevox_path = | |
383 resources_path.Append(extension_misc::kChromeVoxExtensionPath); | |
384 | |
385 const base::FilePath::CharType* manifest_filename = | |
386 IsNormalSession() ? extensions::kManifestFilename | |
387 : extension_misc::kGuestManifestFilename; | |
388 AddWithManifestFile( | |
389 manifest_filename, | |
390 chromevox_path, | |
391 extension_misc::kChromeVoxExtensionId, | |
392 done_cb); | |
393 } | |
394 | |
395 void ComponentLoader::AddChromeOsSpeechSynthesisExtension() { | 376 void ComponentLoader::AddChromeOsSpeechSynthesisExtension() { |
396 const base::FilePath::CharType* manifest_filename = | 377 AddComponentFromDir( |
397 IsNormalSession() ? extensions::kManifestFilename | |
398 : extension_misc::kGuestManifestFilename; | |
399 AddWithManifestFile( | |
400 manifest_filename, | |
401 base::FilePath(extension_misc::kSpeechSynthesisExtensionPath), | 378 base::FilePath(extension_misc::kSpeechSynthesisExtensionPath), |
402 extension_misc::kSpeechSynthesisExtensionId, | 379 extension_misc::kSpeechSynthesisExtensionId, |
403 base::Bind(&ComponentLoader::EnableFileSystemInGuestMode, | 380 base::Bind(&ComponentLoader::EnableFileSystemInGuestMode, |
404 weak_factory_.GetWeakPtr(), | 381 weak_factory_.GetWeakPtr(), |
405 extension_misc::kChromeVoxExtensionId)); | 382 extension_misc::kChromeVoxExtensionId)); |
406 } | 383 } |
407 #endif | 384 #endif |
408 | 385 |
409 void ComponentLoader::AddWithNameAndDescription( | 386 void ComponentLoader::AddWithNameAndDescription( |
410 int manifest_resource_id, | 387 int manifest_resource_id, |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 base::FilePath(FILE_PATH_LITERAL("chromeos/first_run/app"))); | 592 base::FilePath(FILE_PATH_LITERAL("chromeos/first_run/app"))); |
616 | 593 |
617 Add(IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST, | 594 Add(IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST, |
618 base::FilePath(extension_misc::kConnectivityDiagnosticsPath)); | 595 base::FilePath(extension_misc::kConnectivityDiagnosticsPath)); |
619 Add(IDR_CONNECTIVITY_DIAGNOSTICS_LAUNCHER_MANIFEST, | 596 Add(IDR_CONNECTIVITY_DIAGNOSTICS_LAUNCHER_MANIFEST, |
620 base::FilePath(extension_misc::kConnectivityDiagnosticsLauncherPath)); | 597 base::FilePath(extension_misc::kConnectivityDiagnosticsLauncherPath)); |
621 | 598 |
622 Add(IDR_ARC_SUPPORT_MANIFEST, | 599 Add(IDR_ARC_SUPPORT_MANIFEST, |
623 base::FilePath(FILE_PATH_LITERAL("chromeos/arc_support"))); | 600 base::FilePath(FILE_PATH_LITERAL("chromeos/arc_support"))); |
624 } | 601 } |
625 | |
626 // Load ChromeVox extension now if spoken feedback is enabled. | |
627 if (chromeos::AccessibilityManager::Get() && | |
628 chromeos::AccessibilityManager::Get()->IsSpokenFeedbackEnabled()) { | |
629 AddChromeVoxExtension(base::Closure()); | |
630 } | |
631 #endif // defined(OS_CHROMEOS) | 602 #endif // defined(OS_CHROMEOS) |
632 | 603 |
633 #if defined(GOOGLE_CHROME_BUILD) | 604 #if defined(GOOGLE_CHROME_BUILD) |
634 #if !defined(OS_CHROMEOS) // http://crbug.com/314799 | 605 #if !defined(OS_CHROMEOS) // http://crbug.com/314799 |
635 AddNetworkSpeechSynthesisExtension(); | 606 AddNetworkSpeechSynthesisExtension(); |
636 #endif | 607 #endif |
637 | 608 |
638 #endif // defined(GOOGLE_CHROME_BUILD) | 609 #endif // defined(GOOGLE_CHROME_BUILD) |
639 | 610 |
640 Add(IDR_CRYPTOTOKEN_MANIFEST, | 611 Add(IDR_CRYPTOTOKEN_MANIFEST, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 off_the_record_context, Extension::GetBaseURLFromExtensionId(id)); | 650 off_the_record_context, Extension::GetBaseURLFromExtensionId(id)); |
680 storage::FileSystemContext* file_system_context = | 651 storage::FileSystemContext* file_system_context = |
681 content::BrowserContext::GetStoragePartitionForSite( | 652 content::BrowserContext::GetStoragePartitionForSite( |
682 off_the_record_context, site)->GetFileSystemContext(); | 653 off_the_record_context, site)->GetFileSystemContext(); |
683 file_system_context->EnableTemporaryFileSystemInIncognito(); | 654 file_system_context->EnableTemporaryFileSystemInIncognito(); |
684 } | 655 } |
685 #endif | 656 #endif |
686 } | 657 } |
687 | 658 |
688 #if defined(OS_CHROMEOS) | 659 #if defined(OS_CHROMEOS) |
689 void ComponentLoader::AddWithManifestFile( | 660 void ComponentLoader::AddComponentFromDir( |
690 const base::FilePath::CharType* manifest_filename, | |
691 const base::FilePath& root_directory, | 661 const base::FilePath& root_directory, |
692 const char* extension_id, | 662 const char* extension_id, |
693 const base::Closure& done_cb) { | 663 const base::Closure& done_cb) { |
694 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 664 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 665 const base::FilePath::CharType* manifest_filename = |
| 666 IsNormalSession() ? extensions::kManifestFilename |
| 667 : extension_misc::kGuestManifestFilename; |
695 BrowserThread::PostTaskAndReplyWithResult( | 668 BrowserThread::PostTaskAndReplyWithResult( |
696 BrowserThread::FILE, | 669 BrowserThread::FILE, |
697 FROM_HERE, | 670 FROM_HERE, |
698 base::Bind(&LoadManifestOnFileThread, root_directory, manifest_filename), | 671 base::Bind(&LoadManifestOnFileThread, root_directory, manifest_filename), |
699 base::Bind(&ComponentLoader::FinishAddWithManifestFile, | 672 base::Bind(&ComponentLoader::FinishAddComponentFromDir, |
700 weak_factory_.GetWeakPtr(), | 673 weak_factory_.GetWeakPtr(), |
701 root_directory, | 674 root_directory, |
702 extension_id, | 675 extension_id, |
703 done_cb)); | 676 done_cb)); |
704 } | 677 } |
705 | 678 |
706 void ComponentLoader::FinishAddWithManifestFile( | 679 void ComponentLoader::FinishAddComponentFromDir( |
707 const base::FilePath& root_directory, | 680 const base::FilePath& root_directory, |
708 const char* extension_id, | 681 const char* extension_id, |
709 const base::Closure& done_cb, | 682 const base::Closure& done_cb, |
710 std::unique_ptr<base::DictionaryValue> manifest) { | 683 std::unique_ptr<base::DictionaryValue> manifest) { |
711 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 684 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
712 if (!manifest) | 685 if (!manifest) |
713 return; // Error already logged. | 686 return; // Error already logged. |
714 std::string actual_extension_id = Add( | 687 std::string actual_extension_id = Add( |
715 manifest.release(), | 688 manifest.release(), |
716 root_directory, | 689 root_directory, |
717 false); | 690 false); |
718 CHECK_EQ(extension_id, actual_extension_id); | 691 CHECK_EQ(extension_id, actual_extension_id); |
719 if (!done_cb.is_null()) | 692 if (!done_cb.is_null()) |
720 done_cb.Run(); | 693 done_cb.Run(); |
721 } | 694 } |
722 #endif | 695 #endif |
723 | 696 |
724 } // namespace extensions | 697 } // namespace extensions |
OLD | NEW |