Chromium Code Reviews| Index: chrome/browser/extensions/component_loader.cc |
| diff --git a/chrome/browser/extensions/component_loader.cc b/chrome/browser/extensions/component_loader.cc |
| index 6c5292970d28ab20b762ebc86c9e0ab35cf64735..46f100c3fef21750850eb5cb22dc225ef60ec1c7 100644 |
| --- a/chrome/browser/extensions/component_loader.cc |
| +++ b/chrome/browser/extensions/component_loader.cc |
| @@ -183,9 +183,22 @@ std::string ComponentLoader::Add(const std::string& manifest_contents, |
| return std::string(); |
| } |
| -std::string ComponentLoader::Add(const base::DictionaryValue* parsed_manifest, |
| +std::string ComponentLoader::Add(base::DictionaryValue* parsed_manifest, |
| const base::FilePath& root_directory) { |
| ComponentExtensionInfo info(parsed_manifest, root_directory); |
| +#if defined(OS_CHROMEOS) |
| + // Force incognito split in Guest mode for some component extensions. |
| + // In Guest mode non-incognito background pages are not allowed so |
| + // split mode is required. |
| + if (info.extension_id == extension_misc::kChromeVoxExtensionId || |
| + info.extension_id == extension_misc::kSpeechSynthesisExtensionId) { |
| + const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(chromeos::switches::kGuestSession)) { |
| + parsed_manifest->SetString(manifest_keys::kIncognito, |
| + manifest_values::kIncognitoSplit); |
| + } |
| + } |
| +#endif |
|
asargent_no_longer_on_chrome
2014/02/06 00:58:02
It seems a little hacky to inject a value into the
Dmitry Polukhin
2014/02/06 01:30:21
I'm not aware of the fix for the file manager. Do
|
| component_extensions_.push_back(info); |
| if (extension_service_->is_ready()) |
| Load(info); |
| @@ -326,8 +339,9 @@ void ComponentLoader::AddNetworkSpeechSynthesisExtension() { |
| #if defined(OS_CHROMEOS) |
| void ComponentLoader::AddChromeOsSpeechSynthesisExtension() { |
| - Add(IDR_SPEECH_SYNTHESIS_MANIFEST, |
| + std::string id = Add(IDR_SPEECH_SYNTHESIS_MANIFEST, |
| base::FilePath(extension_misc::kSpeechSynthesisExtensionPath)); |
| + EnbaleFileSystemInGuestMode(id); |
| } |
| #endif |
| @@ -480,21 +494,7 @@ void ComponentLoader::AddDefaultComponentExtensionsWithBackgroundPages( |
| chromeos::switches::kDisableQuickofficeComponentApp)) { |
| std::string id = Add(IDR_QUICKOFFICE_MANIFEST, base::FilePath( |
| FILE_PATH_LITERAL("/usr/share/chromeos-assets/quick_office"))); |
| - if (command_line->HasSwitch(chromeos::switches::kGuestSession)) { |
| - // TODO(dpolukhin): Hack to enable HTML5 temporary file system for |
| - // Quickoffice. It doesn't work without temporary file system access. |
| - // Make sure temporary file system is enabled in the off the record |
| - // browser context (as that is the one used in guest session). |
| - content::BrowserContext* off_the_record_context = |
| - ExtensionsBrowserClient::Get()->GetOffTheRecordContext( |
| - browser_context_); |
| - GURL site = content::SiteInstance::GetSiteForURL( |
| - off_the_record_context, Extension::GetBaseURLFromExtensionId(id)); |
| - fileapi::FileSystemContext* file_system_context = |
| - content::BrowserContext::GetStoragePartitionForSite( |
| - off_the_record_context, site)->GetFileSystemContext(); |
| - file_system_context->EnableTemporaryFileSystemInIncognito(); |
| - } |
| + EnbaleFileSystemInGuestMode(id); |
| } |
| #endif // defined(GOOGLE_CHROME_BUILD) |
| @@ -599,4 +599,25 @@ void ComponentLoader::UnloadComponent(ComponentExtensionInfo* component) { |
| } |
| } |
| +void ComponentLoader::EnbaleFileSystemInGuestMode(const std::string& id) { |
| +#if defined(OS_CHROMEOS) |
| + const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(chromeos::switches::kGuestSession)) { |
| + // TODO(dpolukhin): Hack to enable HTML5 temporary file system for |
| + // the extension. Some component extensions don't work without temporary |
| + // file system access. Make sure temporary file system is enabled in the off |
| + // the record browser context (as that is the one used in guest session). |
| + content::BrowserContext* off_the_record_context = |
| + ExtensionsBrowserClient::Get()->GetOffTheRecordContext( |
| + browser_context_); |
| + GURL site = content::SiteInstance::GetSiteForURL( |
| + off_the_record_context, Extension::GetBaseURLFromExtensionId(id)); |
| + fileapi::FileSystemContext* file_system_context = |
| + content::BrowserContext::GetStoragePartitionForSite( |
| + off_the_record_context, site)->GetFileSystemContext(); |
| + file_system_context->EnableTemporaryFileSystemInIncognito(); |
| + } |
| +#endif |
| +} |
| + |
| } // namespace extensions |