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

Unified Diff: chrome/browser/user_data_dir_extractor.cc

Issue 174253002: Initialize chrome::DIR_USER_DATA early on for service processes, etc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use dynamic_annotations_win64 for common_constants_win64. Created 6 years, 10 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
« no previous file with comments | « chrome/browser/user_data_dir_extractor.h ('k') | chrome/browser/user_data_dir_extractor_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/user_data_dir_extractor.cc
diff --git a/chrome/browser/user_data_dir_extractor.cc b/chrome/browser/user_data_dir_extractor.cc
deleted file mode 100644
index 3c7e9cbd1166f4fbd1194a6da026149f6993b2af..0000000000000000000000000000000000000000
--- a/chrome/browser/user_data_dir_extractor.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/user_data_dir_extractor.h"
-
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/path_service.h"
-#include "chrome/browser/ui/simple_message_box.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_paths_internal.h"
-#include "chrome/common/chrome_switches.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
-#include "content/public/common/main_function_params.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-
-#if defined(OS_LINUX)
-#include "base/environment.h"
-#endif
-
-#if defined(OS_MACOSX) || defined(OS_WIN)
-#include "chrome/browser/policy/policy_path_parser.h"
-#endif
-
-namespace chrome {
-
-namespace {
-
-GetUserDataDirCallback* custom_get_user_data_dir_callback = NULL;
-
-void ShowUserDataDirWarning(const base::FilePath& user_data_dir) {
- startup_metric_utils::SetNonBrowserUIDisplayed();
-
- // Ensure the ResourceBundle is initialized for string resource access.
- bool cleanup_resource_bundle = false;
- if (!ResourceBundle::HasSharedInstance()) {
- cleanup_resource_bundle = true;
- std::string locale = l10n_util::GetApplicationLocale(std::string());
- const char kUserDataDirDialogFallbackLocale[] = "en-US";
- if (locale.empty())
- locale = kUserDataDirDialogFallbackLocale;
- ResourceBundle::InitSharedInstanceWithLocale(locale, NULL);
- }
-
- const base::string16& title =
- l10n_util::GetStringUTF16(IDS_CANT_WRITE_USER_DIRECTORY_TITLE);
- const base::string16& message =
- l10n_util::GetStringFUTF16(IDS_CANT_WRITE_USER_DIRECTORY_SUMMARY,
- user_data_dir.LossyDisplayName());
-
- if (cleanup_resource_bundle)
- ResourceBundle::CleanupSharedInstance();
-
- // More complex dialogs cannot be shown before the earliest calls here.
- ShowMessageBox(NULL, title, message, chrome::MESSAGE_BOX_TYPE_WARNING);
-}
-
-} // namespace
-
-void InstallCustomGetUserDataDirCallbackForTest(
- GetUserDataDirCallback* callback) {
- custom_get_user_data_dir_callback = callback;
-}
-
-base::FilePath GetUserDataDir(const content::MainFunctionParams& parameters) {
- if (custom_get_user_data_dir_callback)
- return custom_get_user_data_dir_callback->Run();
-
- base::FilePath user_data_dir =
- parameters.command_line.GetSwitchValuePath(switches::kUserDataDir);
- std::string process_type =
- parameters.command_line.GetSwitchValueASCII(switches::kProcessType);
-
-#if defined(OS_LINUX)
- // On Linux, Chrome does not support running multiple copies under different
- // DISPLAYs, so the profile directory can be specified in the environment to
- // support the virtual desktop use-case.
- if (user_data_dir.empty()) {
- std::string user_data_dir_string;
- scoped_ptr<base::Environment> environment(base::Environment::Create());
- if (environment->GetVar("CHROME_USER_DATA_DIR", &user_data_dir_string) &&
- IsStringUTF8(user_data_dir_string)) {
- user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string);
- }
- }
-#endif
-#if defined(OS_MACOSX) || defined(OS_WIN)
- policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
-#endif
-
- // If the directory does not exist and cannot be created, prompt the user.
- if (!user_data_dir.empty() &&
- !PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
- user_data_dir, chrome::ProcessNeedsProfileDir(process_type))) {
- ShowUserDataDirWarning(user_data_dir);
- }
-
- // Getting the user data directory can fail if the directory isn't creatable.
- // ProcessSingleton needs a real user data directory on Mac/Linux, so it's
- // better to fail here than fail mysteriously elsewhere.
- CHECK(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir))
- << "Must be able to get user data directory!";
- return user_data_dir;
-}
-
-} // namespace chrome
« no previous file with comments | « chrome/browser/user_data_dir_extractor.h ('k') | chrome/browser/user_data_dir_extractor_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698