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

Unified Diff: chrome/browser/extensions/component_loader.cc

Issue 1162283002: Load the Chrome OS TTS engine manifest from the file system isntead of resources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update component extension whitelist. Created 5 years, 7 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/component_loader.cc
diff --git a/chrome/browser/extensions/component_loader.cc b/chrome/browser/extensions/component_loader.cc
index 9f1779aa1941158cacd1999407ca74a642bacc8f..05c041facea1f48f7ab943fa3b451b13a8d4fe31 100644
--- a/chrome/browser/extensions/component_loader.cc
+++ b/chrome/browser/extensions/component_loader.cc
@@ -29,6 +29,7 @@
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/plugin_service.h"
+#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_l10n_util.h"
#include "extensions/common/file_util.h"
@@ -87,14 +88,20 @@ std::string GenerateId(const base::DictionaryValue* manifest,
#if defined(OS_CHROMEOS)
scoped_ptr<base::DictionaryValue>
LoadManifestOnFileThread(
- const base::FilePath& chromevox_path, const char* manifest_filename) {
+ const base::FilePath& root_directory,
+ const base::FilePath::CharType* manifest_filename) {
DCHECK_CURRENTLY_ON(content::BrowserThread::FILE);
std::string error;
scoped_ptr<base::DictionaryValue> manifest(
- file_util::LoadManifest(chromevox_path, manifest_filename, &error));
- CHECK(manifest) << error;
+ file_util::LoadManifest(root_directory, manifest_filename, &error));
+ if (!manifest) {
+ LOG(ERROR) << "Can't load "
+ << root_directory.Append(manifest_filename).AsUTF8Unsafe()
+ << ": " << error;
+ return nullptr;
+ }
bool localized = extension_l10n_util::LocalizeExtension(
- chromevox_path, manifest.get(), &error);
+ root_directory, manifest.get(), &error);
CHECK(localized) << error;
return manifest.Pass();
}
@@ -395,45 +402,33 @@ void ComponentLoader::AddNetworkSpeechSynthesisExtension() {
#if defined(OS_CHROMEOS)
void ComponentLoader::AddChromeVoxExtension(
const base::Closure& done_cb) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
base::FilePath resources_path;
- PathService::Get(chrome::DIR_RESOURCES, &resources_path);
+ CHECK(PathService::Get(chrome::DIR_RESOURCES, &resources_path));
base::FilePath chromevox_path =
resources_path.Append(extension_misc::kChromeVoxExtensionPath);
- const char* manifest_filename =
- IsNormalSession() ? extension_misc::kChromeVoxManifestFilename
- : extension_misc::kChromeVoxGuestManifestFilename;
-
- BrowserThread::PostTaskAndReplyWithResult(
- BrowserThread::FILE,
- FROM_HERE,
- base::Bind(&LoadManifestOnFileThread, chromevox_path, manifest_filename),
- base::Bind(&ComponentLoader::AddChromeVoxExtensionWithManifest,
+ const base::FilePath::CharType* manifest_filename =
+ IsNormalSession() ? extensions::kManifestFilename
+ : extension_misc::kGuestManifestFilename;
+ AddWithManifestFile(
+ manifest_filename,
+ chromevox_path,
+ extension_misc::kChromeVoxExtensionId,
+ done_cb);
+}
+
+void ComponentLoader::AddChromeOsSpeechSynthesisExtension() {
+ const base::FilePath::CharType* manifest_filename =
+ IsNormalSession() ? extensions::kManifestFilename
+ : extension_misc::kGuestManifestFilename;
+ AddWithManifestFile(
+ manifest_filename,
+ base::FilePath(extension_misc::kSpeechSynthesisExtensionPath),
+ extension_misc::kSpeechSynthesisExtensionId,
+ base::Bind(&ComponentLoader::EnableFileSystemInGuestMode,
weak_factory_.GetWeakPtr(),
- chromevox_path,
- done_cb));
-}
-
-void ComponentLoader::AddChromeVoxExtensionWithManifest(
- const base::FilePath& chromevox_path,
- const base::Closure& done_cb,
- scoped_ptr<base::DictionaryValue> manifest) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- std::string extension_id = Add(manifest.release(), chromevox_path, false);
- CHECK_EQ(extension_misc::kChromeVoxExtensionId, extension_id);
- if (!done_cb.is_null())
- done_cb.Run();
-}
-
-std::string ComponentLoader::AddChromeOsSpeechSynthesisExtension() {
- int idr = IsNormalSession() ? IDR_SPEECH_SYNTHESIS_MANIFEST
- : IDR_SPEECH_SYNTHESIS_GUEST_MANIFEST;
- std::string id = Add(idr,
- base::FilePath(extension_misc::kSpeechSynthesisExtensionPath));
- EnableFileSystemInGuestMode(id);
- return id;
+ extension_misc::kChromeVoxExtensionId));
}
#endif
@@ -718,4 +713,40 @@ void ComponentLoader::EnableFileSystemInGuestMode(const std::string& id) {
#endif
}
+#if defined(OS_CHROMEOS)
+void ComponentLoader::AddWithManifestFile(
+ const base::FilePath::CharType* manifest_filename,
+ const base::FilePath& root_directory,
+ const char* extension_id,
+ const base::Closure& done_cb) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ BrowserThread::PostTaskAndReplyWithResult(
+ BrowserThread::FILE,
+ FROM_HERE,
+ base::Bind(&LoadManifestOnFileThread, root_directory, manifest_filename),
+ base::Bind(&ComponentLoader::FinishAddWithManifestFile,
+ weak_factory_.GetWeakPtr(),
+ root_directory,
+ extension_id,
+ done_cb));
+}
+
+void ComponentLoader::FinishAddWithManifestFile(
+ const base::FilePath& root_directory,
+ const char* extension_id,
+ const base::Closure& done_cb,
+ scoped_ptr<base::DictionaryValue> manifest) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (!manifest)
+ return; // Error already logged.
+ std::string actual_extension_id = Add(
+ manifest.release(),
+ root_directory,
+ false);
+ CHECK_EQ(extension_id, actual_extension_id);
+ if (!done_cb.is_null())
+ done_cb.Run();
+}
+#endif
+
} // namespace extensions
« no previous file with comments | « chrome/browser/extensions/component_loader.h ('k') | chrome/browser/resources/chromeos/speech_synthesis/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698