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

Side by Side Diff: chrome/browser/profile_impl.cc

Issue 3522015: Implement new strategy for default apps (Closed)
Patch Set: all done Created 10 years, 2 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/profile_impl.h ('k') | chrome/browser/resources/calendar_app/128.png » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/profile_impl.h" 5 #include "chrome/browser/profile_impl.h"
6 6
7 #include "app/resource_bundle.h" 7 #include "app/resource_bundle.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/environment.h" 9 #include "base/environment.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
11 #include "base/file_util.h" 11 #include "base/file_util.h"
12 #include "base/histogram.h" 12 #include "base/histogram.h"
13 #include "base/path_service.h" 13 #include "base/path_service.h"
14 #include "base/scoped_ptr.h" 14 #include "base/scoped_ptr.h"
15 #include "base/string_number_conversions.h" 15 #include "base/string_number_conversions.h"
16 #include "base/string_util.h" 16 #include "base/string_util.h"
17 #include "chrome/browser/appcache/chrome_appcache_service.h" 17 #include "chrome/browser/appcache/chrome_appcache_service.h"
18 #include "chrome/browser/autocomplete/autocomplete_classifier.h" 18 #include "chrome/browser/autocomplete/autocomplete_classifier.h"
19 #include "chrome/browser/autofill/personal_data_manager.h" 19 #include "chrome/browser/autofill/personal_data_manager.h"
20 #include "chrome/browser/background_contents_service.h" 20 #include "chrome/browser/background_contents_service.h"
21 #include "chrome/browser/background_mode_manager.h" 21 #include "chrome/browser/background_mode_manager.h"
22 #include "chrome/browser/bookmarks/bookmark_model.h" 22 #include "chrome/browser/bookmarks/bookmark_model.h"
23 #include "chrome/browser/browser_list.h" 23 #include "chrome/browser/browser_list.h"
24 #include "chrome/browser/browser_process.h" 24 #include "chrome/browser/browser_process.h"
25 #include "chrome/browser/chrome_blob_storage_context.h" 25 #include "chrome/browser/chrome_blob_storage_context.h"
26 #include "chrome/browser/chrome_thread.h" 26 #include "chrome/browser/chrome_thread.h"
27 #include "chrome/browser/dom_ui/ntp_resource_cache.h" 27 #include "chrome/browser/dom_ui/ntp_resource_cache.h"
28 #include "chrome/browser/download/download_manager.h" 28 #include "chrome/browser/download/download_manager.h"
29 #include "chrome/browser/extensions/default_apps.h"
29 #include "chrome/browser/extensions/extension_devtools_manager.h" 30 #include "chrome/browser/extensions/extension_devtools_manager.h"
30 #include "chrome/browser/extensions/extension_error_reporter.h" 31 #include "chrome/browser/extensions/extension_error_reporter.h"
31 #include "chrome/browser/extensions/extension_info_map.h" 32 #include "chrome/browser/extensions/extension_info_map.h"
32 #include "chrome/browser/extensions/extension_message_service.h" 33 #include "chrome/browser/extensions/extension_message_service.h"
33 #include "chrome/browser/extensions/extension_process_manager.h" 34 #include "chrome/browser/extensions/extension_process_manager.h"
34 #include "chrome/browser/extensions/extensions_service.h" 35 #include "chrome/browser/extensions/extensions_service.h"
35 #include "chrome/browser/extensions/user_script_master.h" 36 #include "chrome/browser/extensions/user_script_master.h"
36 #include "chrome/browser/favicon_service.h" 37 #include "chrome/browser/favicon_service.h"
37 #include "chrome/browser/file_system/file_system_host_context.h" 38 #include "chrome/browser/file_system/file_system_host_context.h"
38 #include "chrome/browser/find_bar_state.h" 39 #include "chrome/browser/find_bar_state.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 162
162 FilePath GetMediaCachePath(const FilePath& base) { 163 FilePath GetMediaCachePath(const FilePath& base) {
163 return base.Append(chrome::kMediaCacheDirname); 164 return base.Append(chrome::kMediaCacheDirname);
164 } 165 }
165 166
166 bool HasACacheSubdir(const FilePath &dir) { 167 bool HasACacheSubdir(const FilePath &dir) {
167 return file_util::PathExists(GetCachePath(dir)) || 168 return file_util::PathExists(GetCachePath(dir)) ||
168 file_util::PathExists(GetMediaCachePath(dir)); 169 file_util::PathExists(GetMediaCachePath(dir));
169 } 170 }
170 171
171 // Returns true if the default apps should be loaded (so that the app panel is
172 // not empty).
173 bool IncludeDefaultApps() {
174 #if defined(OS_CHROMEOS) && defined(GOOGLE_CHROME_BUILD)
175 return true;
176 #endif
177 return false;
178 }
179
180 // Simple task to log the size of the current profile. 172 // Simple task to log the size of the current profile.
181 class ProfileSizeTask : public Task { 173 class ProfileSizeTask : public Task {
182 public: 174 public:
183 explicit ProfileSizeTask(const FilePath& path) : path_(path) {} 175 explicit ProfileSizeTask(const FilePath& path) : path_(path) {}
184 virtual ~ProfileSizeTask() {} 176 virtual ~ProfileSizeTask() {}
185 177
186 virtual void Run(); 178 virtual void Run();
187 private: 179 private:
188 FilePath path_; 180 FilePath path_;
189 }; 181 };
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 } // namespace 225 } // namespace
234 226
235 // static 227 // static
236 Profile* Profile::CreateProfile(const FilePath& path) { 228 Profile* Profile::CreateProfile(const FilePath& path) {
237 return new ProfileImpl(path); 229 return new ProfileImpl(path);
238 } 230 }
239 231
240 // static 232 // static
241 void ProfileImpl::RegisterUserPrefs(PrefService* prefs) { 233 void ProfileImpl::RegisterUserPrefs(PrefService* prefs) {
242 prefs->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false); 234 prefs->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false);
235 DefaultApps::RegisterUserPrefs(prefs);
243 } 236 }
244 237
245 ProfileImpl::ProfileImpl(const FilePath& path) 238 ProfileImpl::ProfileImpl(const FilePath& path)
246 : path_(path), 239 : path_(path),
247 visited_link_event_listener_(new VisitedLinkEventListener()), 240 visited_link_event_listener_(new VisitedLinkEventListener()),
248 extension_devtools_manager_(NULL), 241 extension_devtools_manager_(NULL),
249 request_context_(NULL), 242 request_context_(NULL),
250 media_request_context_(NULL), 243 media_request_context_(NULL),
251 extensions_request_context_(NULL), 244 extensions_request_context_(NULL),
252 host_content_settings_map_(NULL), 245 host_content_settings_map_(NULL),
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 // TODO(aa): We should just remove this functionality, 361 // TODO(aa): We should just remove this functionality,
369 // since it isn't used anymore. 362 // since it isn't used anymore.
370 user_script_master_ = new UserScriptMaster(script_dir, this); 363 user_script_master_ = new UserScriptMaster(script_dir, this);
371 364
372 extensions_service_ = new ExtensionsService( 365 extensions_service_ = new ExtensionsService(
373 this, 366 this,
374 CommandLine::ForCurrentProcess(), 367 CommandLine::ForCurrentProcess(),
375 GetPath().AppendASCII(ExtensionsService::kInstallDirectoryName), 368 GetPath().AppendASCII(ExtensionsService::kInstallDirectoryName),
376 true); 369 true);
377 370
371 RegisterComponentExtensions();
372 extensions_service_->Init();
373 InstallDefaultApps();
374
375 // Load any extensions specified with --load-extension.
376 if (command_line->HasSwitch(switches::kLoadExtension)) {
377 FilePath path = command_line->GetSwitchValuePath(switches::kLoadExtension);
378 extensions_service_->LoadExtension(path);
379 }
380 }
381
382 void ProfileImpl::RegisterComponentExtensions() {
378 // Register the component extensions. 383 // Register the component extensions.
379 typedef std::list<std::pair<std::string, int> > ComponentExtensionList; 384 typedef std::list<std::pair<std::string, int> > ComponentExtensionList;
380 ComponentExtensionList component_extensions; 385 ComponentExtensionList component_extensions;
381 386
382 // Bookmark manager. 387 // Bookmark manager.
383 component_extensions.push_back( 388 component_extensions.push_back(
384 std::make_pair("bookmark_manager", IDR_BOOKMARKS_MANIFEST)); 389 std::make_pair("bookmark_manager", IDR_BOOKMARKS_MANIFEST));
385 390
386 #if defined(TOUCH_UI) 391 #if defined(TOUCH_UI)
387 component_extensions.push_back( 392 component_extensions.push_back(
388 std::make_pair("keyboard", IDR_KEYBOARD_MANIFEST)); 393 std::make_pair("keyboard", IDR_KEYBOARD_MANIFEST));
389 #endif 394 #endif
390 395
391 // Web Store. 396 // Web Store.
392 component_extensions.push_back( 397 component_extensions.push_back(
393 std::make_pair("web_store", IDR_WEBSTORE_MANIFEST)); 398 std::make_pair("web_store", IDR_WEBSTORE_MANIFEST));
394 399
395 // Some sample apps to make our lives easier while we are developing extension
396 // apps. This way we don't have to constantly install these over and over.
397 if (Extension::AppsAreEnabled() && IncludeDefaultApps()) {
398 component_extensions.push_back(
399 std::make_pair("gmail_app", IDR_GMAIL_APP_MANIFEST));
400 component_extensions.push_back(
401 std::make_pair("calendar_app", IDR_CALENDAR_APP_MANIFEST));
402 component_extensions.push_back(
403 std::make_pair("docs_app", IDR_DOCS_APP_MANIFEST));
404 }
405
406 #if defined(OS_CHROMEOS) && defined(GOOGLE_CHROME_BUILD) 400 #if defined(OS_CHROMEOS) && defined(GOOGLE_CHROME_BUILD)
407 if (Extension::AppsAreEnabled()) { 401 component_extensions.push_back(
408 component_extensions.push_back( 402 std::make_pair("chat_manager", IDR_TALK_APP_MANIFEST));
409 std::make_pair("chat_manager", IDR_TALK_APP_MANIFEST));
410 }
411 #endif 403 #endif
412 404
413 for (ComponentExtensionList::iterator iter = component_extensions.begin(); 405 for (ComponentExtensionList::iterator iter = component_extensions.begin();
414 iter != component_extensions.end(); ++iter) { 406 iter != component_extensions.end(); ++iter) {
415 FilePath path; 407 FilePath path;
416 if (PathService::Get(chrome::DIR_RESOURCES, &path)) { 408 if (PathService::Get(chrome::DIR_RESOURCES, &path)) {
417 path = path.AppendASCII(iter->first); 409 path = path.AppendASCII(iter->first);
418 } else { 410 } else {
419 NOTREACHED(); 411 NOTREACHED();
420 } 412 }
421 413
422 std::string manifest = 414 std::string manifest =
423 ResourceBundle::GetSharedInstance().GetRawDataResource( 415 ResourceBundle::GetSharedInstance().GetRawDataResource(
424 iter->second).as_string(); 416 iter->second).as_string();
425 extensions_service_->register_component_extension( 417 extensions_service_->register_component_extension(
426 ExtensionsService::ComponentExtensionInfo(manifest, path)); 418 ExtensionsService::ComponentExtensionInfo(manifest, path));
427 } 419 }
420 }
428 421
429 extensions_service_->Init(); 422 void ProfileImpl::InstallDefaultApps() {
423 #if !defined(OS_CHROMEOS)
424 // On desktop Chrome, we don't have default apps on by, err, default yet.
425 if (!CommandLine::ForCurrentProcess()->HasSwitch(
426 switches::kEnableDefaultApps)) {
427 return;
428 }
429 #endif
430 430
431 // Load any extensions specified with --load-extension. 431 // The web store only supports en-US at the moment, so we don't install
432 if (command_line->HasSwitch(switches::kLoadExtension)) { 432 // default apps in other locales.
433 FilePath path = command_line->GetSwitchValuePath(switches::kLoadExtension); 433 if (g_browser_process->GetApplicationLocale() != "en-US")
434 extensions_service_->LoadExtension(path); 434 return;
435
436 ExtensionsService* extensions_service = GetExtensionsService();
437 const ExtensionIdSet* app_ids =
438 extensions_service->default_apps()->GetAppsToInstall();
439 if (!app_ids)
440 return;
441
442 for (ExtensionIdSet::const_iterator iter = app_ids->begin();
443 iter != app_ids->end(); ++iter) {
444 extensions_service->AddPendingExtensionFromDefaultAppList(*iter);
435 } 445 }
436 } 446 }
437 447
438 void ProfileImpl::InitWebResources() { 448 void ProfileImpl::InitWebResources() {
439 if (web_resource_service_) 449 if (web_resource_service_)
440 return; 450 return;
441 451
442 web_resource_service_ = new WebResourceService(this); 452 web_resource_service_ = new WebResourceService(this);
443 web_resource_service_->StartAfterDelay(); 453 web_resource_service_->StartAfterDelay();
444 } 454 }
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after
1264 #if defined(OS_CHROMEOS) 1274 #if defined(OS_CHROMEOS)
1265 chromeos::ProxyConfigServiceImpl* 1275 chromeos::ProxyConfigServiceImpl*
1266 ProfileImpl::GetChromeOSProxyConfigServiceImpl() { 1276 ProfileImpl::GetChromeOSProxyConfigServiceImpl() {
1267 if (!chromeos_proxy_config_service_impl_) { 1277 if (!chromeos_proxy_config_service_impl_) {
1268 chromeos_proxy_config_service_impl_ = 1278 chromeos_proxy_config_service_impl_ =
1269 new chromeos::ProxyConfigServiceImpl(); 1279 new chromeos::ProxyConfigServiceImpl();
1270 } 1280 }
1271 return chromeos_proxy_config_service_impl_; 1281 return chromeos_proxy_config_service_impl_;
1272 } 1282 }
1273 #endif // defined(OS_CHROMEOS) 1283 #endif // defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « chrome/browser/profile_impl.h ('k') | chrome/browser/resources/calendar_app/128.png » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698