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

Unified Diff: chrome/browser/profiles/profile_impl.cc

Issue 6254007: Adding ChromeVox as a component extensions (enabled only for ChromeOS, for no... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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/profiles/profile_impl.cc
===================================================================
--- chrome/browser/profiles/profile_impl.cc (revision 71744)
+++ chrome/browser/profiles/profile_impl.cc (working copy)
@@ -13,6 +13,7 @@
#include "base/path_service.h"
#include "base/scoped_ptr.h"
#include "base/string_number_conversions.h"
+#include "base/string_piece.h"
#include "base/string_util.h"
#include "chrome/browser/about_flags.h"
#include "chrome/browser/appcache/chrome_appcache_service.h"
@@ -30,6 +31,7 @@
#include "chrome/browser/dom_ui/ntp_resource_cache.h"
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/extensions/default_apps.h"
+#include "chrome/browser/extensions/extension_accessibility_api.h"
#include "chrome/browser/extensions/extension_devtools_manager.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_info_map.h"
@@ -91,6 +93,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/render_messages.h"
#include "grit/browser_resources.h"
+#include "grit/component_extension_resources_map.h"
#include "grit/locale_settings.h"
#include "net/base/transport_security_state.h"
#include "webkit/database/database_tracker.h"
@@ -382,6 +385,15 @@
component_extensions.push_back(
std::make_pair("bookmark_manager", IDR_BOOKMARKS_MANIFEST));
+#if defined(OS_CHROMEOS)
+ // Register access extensions only if accessibility is enabled.
+ if (ExtensionAccessibilityEventRouter::GetInstance()->
+ IsAccessibilityEnabled()) {
+ component_extensions.push_back(
+ std::make_pair("access_chromevox", IDR_CHROMEVOX_MANIFEST));
+ }
+#endif
+
#if defined(TOUCH_UI)
component_extensions.push_back(
std::make_pair("keyboard", IDR_KEYBOARD_MANIFEST));
@@ -400,6 +412,15 @@
NOTREACHED();
}
+#if defined(OS_CHROMEOS)
+ if (StartsWithASCII(iter->first, "access_", true)) {
+ path = GetPath().AppendASCII(
+ ExtensionService::kAccessibilityInstallDirectoryName);
+ path = path.AppendASCII(iter->first);
+ ExtractAccessibilityExtensionResources(iter->first, path.DirName());
asargent_no_longer_on_chrome 2011/01/19 19:14:15 Doesn't this mean you'll be doing this unpacking e
+ }
+#endif
+
std::string manifest =
ResourceBundle::GetSharedInstance().GetRawDataResource(
iter->second).as_string();
@@ -408,6 +429,29 @@
}
}
+void ProfileImpl::ExtractAccessibilityExtensionResources(
+ const std::string dir_name, const FilePath root_path) {
+ for (size_t i = 0; i < kComponentExtensionResourcesSize; ++i) {
+ if (StartsWithASCII(kComponentExtensionResources[i].name, dir_name, true)) {
+ FilePath file_path = root_path.AppendASCII(
+ kComponentExtensionResources[i].name);
+#if defined(OS_WIN)
+ file_path = file_path.NormalizeWindowsPathSeparators();
+#endif
+ if (!file_util::PathExists(file_path.DirName())) {
+ file_util::CreateDirectory(file_path.DirName());
+ }
+ base::StringPiece content =
+ ResourceBundle::GetSharedInstance().GetRawDataResource(
+ kComponentExtensionResources[i].value);
+ if (file_util::WriteFile(file_path, content.data(), content.length()) ==
+ -1) {
+ LOG(ERROR) << "ERROR unpacking access extension resource.";
+ }
+ }
+ }
+}
+
void ProfileImpl::InstallDefaultApps() {
ExtensionService* extension_service = GetExtensionService();
DefaultApps* default_apps = extension_service->default_apps();

Powered by Google App Engine
This is Rietveld 408576698