From 964e1d6bb6f53dc535e05ef67eeef4bf2eafc3a9 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 18 Jan 2015 16:42:32 -0800 Subject: [PATCH 1/4] Override DIR_APP_DATA on Linux --- brightray/browser/browser_context.cc | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/brightray/browser/browser_context.cc b/brightray/browser/browser_context.cc index 05f127755c..7a9b56c052 100644 --- a/brightray/browser/browser_context.cc +++ b/brightray/browser/browser_context.cc @@ -27,6 +27,23 @@ using content::BrowserThread; namespace brightray { +namespace { + +#if defined(OS_LINUX) +void OverrideLinuxAppDataPath() { + base::FilePath path; + if (PathService::Get(base::DIR_APP_DATA, &path)) + return; + scoped_ptr env(base::Environment::Create()); + path = base::nix::GetXDGDirectory(env.get(), + base::nix::kXdgConfigHomeEnvVar, + base::nix::kDotConfigDir); + PathService::Override(base::DIR_APP_DATA, path); +} +#endif + +} // namespace + class BrowserContext::ResourceContext : public content::ResourceContext { public: ResourceContext() : getter_(nullptr) {} @@ -51,16 +68,12 @@ BrowserContext::BrowserContext() : resource_context_(new ResourceContext) { } void BrowserContext::Initialize() { - base::FilePath path; #if defined(OS_LINUX) - scoped_ptr env(base::Environment::Create()); - path = base::nix::GetXDGDirectory(env.get(), - base::nix::kXdgConfigHomeEnvVar, - base::nix::kDotConfigDir); -#else - CHECK(PathService::Get(base::DIR_APP_DATA, &path)); + OverrideLinuxAppDataPath(); #endif + base::FilePath path; + PathService::Get(base::DIR_APP_DATA, &path); path_ = path.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName())); auto prefs_path = GetPath().Append(FILE_PATH_LITERAL("Preferences")); From 5b4e5a7e55954b176d9c480561840d29490fc199 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 18 Jan 2015 16:59:57 -0800 Subject: [PATCH 2/4] Override DIR_USER_DATA as data path --- brightray/brightray.gyp | 1 + brightray/browser/brightray_paths.h | 20 ++++++++++++++++++++ brightray/browser/browser_context.cc | 9 ++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 brightray/browser/brightray_paths.h diff --git a/brightray/brightray.gyp b/brightray/brightray.gyp index 45b7bb5e4d..ad90b1def8 100644 --- a/brightray/brightray.gyp +++ b/brightray/brightray.gyp @@ -30,6 +30,7 @@ ], }, 'sources': [ + 'browser/brightray_paths.h', 'browser/browser_client.cc', 'browser/browser_client.h', 'browser/browser_context.cc', diff --git a/brightray/browser/brightray_paths.h b/brightray/browser/brightray_paths.h new file mode 100644 index 0000000000..f856337e9f --- /dev/null +++ b/brightray/browser/brightray_paths.h @@ -0,0 +1,20 @@ +// Copyright 2015 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. + +#ifndef BROWSER_BRIGHTRAY_PATHS_H_ +#define BROWSER_BRIGHTRAY_PATHS_H_ + +namespace brightray { + +enum { + PATH_START = 1000, + + DIR_USER_DATA = PATH_START, // Directory where user data can be written. + + PATH_END +}; + +} // namespace brightray + +#endif // BROWSER_BRIGHTRAY_PATHS_H_ diff --git a/brightray/browser/browser_context.cc b/brightray/browser/browser_context.cc index 7a9b56c052..ed4d9f5d18 100644 --- a/brightray/browser/browser_context.cc +++ b/brightray/browser/browser_context.cc @@ -4,6 +4,7 @@ #include "browser/browser_context.h" +#include "browser/brightray_paths.h" #include "browser/inspectable_web_contents_impl.h" #include "browser/network_delegate.h" #include "common/application_info.h" @@ -72,9 +73,11 @@ void BrowserContext::Initialize() { OverrideLinuxAppDataPath(); #endif - base::FilePath path; - PathService::Get(base::DIR_APP_DATA, &path); - path_ = path.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName())); + if (!PathService::Get(DIR_USER_DATA, &path_)) { + PathService::Get(base::DIR_APP_DATA, &path_); + path_ = path_.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName())); + PathService::Override(DIR_USER_DATA, path_); + } auto prefs_path = GetPath().Append(FILE_PATH_LITERAL("Preferences")); base::PrefServiceFactory prefs_factory; From 76e3d567605bd62edf8243ddbb4a24ac1d15c08d Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 18 Jan 2015 17:19:25 -0800 Subject: [PATCH 3/4] Make DIR_APP_DATA available on Linux --- brightray/browser/brightray_paths.h | 14 ++++++++++++++ brightray/browser/browser_context.cc | 6 +++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/brightray/browser/brightray_paths.h b/brightray/browser/brightray_paths.h index f856337e9f..83a3a9f1cd 100644 --- a/brightray/browser/brightray_paths.h +++ b/brightray/browser/brightray_paths.h @@ -5,6 +5,14 @@ #ifndef BROWSER_BRIGHTRAY_PATHS_H_ #define BROWSER_BRIGHTRAY_PATHS_H_ +#include "base/compiler_specific.h" + +#if defined(OS_WIN) +#include "base/base_paths_win.h" +#elif defined(OS_MACOSX) +#include "base/base_paths_mac.h" +#endif + namespace brightray { enum { @@ -12,6 +20,12 @@ enum { DIR_USER_DATA = PATH_START, // Directory where user data can be written. +#if defined(OS_LINUX) + DIR_APP_DATA, // Application Data directory under the user profile. +#else + DIR_APP_DATA = base::DIR_APP_DATA, +#endif + PATH_END }; diff --git a/brightray/browser/browser_context.cc b/brightray/browser/browser_context.cc index ed4d9f5d18..d07c591ca7 100644 --- a/brightray/browser/browser_context.cc +++ b/brightray/browser/browser_context.cc @@ -33,13 +33,13 @@ namespace { #if defined(OS_LINUX) void OverrideLinuxAppDataPath() { base::FilePath path; - if (PathService::Get(base::DIR_APP_DATA, &path)) + if (PathService::Get(DIR_APP_DATA, &path)) return; scoped_ptr env(base::Environment::Create()); path = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir); - PathService::Override(base::DIR_APP_DATA, path); + PathService::Override(DIR_APP_DATA, path); } #endif @@ -74,7 +74,7 @@ void BrowserContext::Initialize() { #endif if (!PathService::Get(DIR_USER_DATA, &path_)) { - PathService::Get(base::DIR_APP_DATA, &path_); + PathService::Get(DIR_APP_DATA, &path_); path_ = path_.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName())); PathService::Override(DIR_USER_DATA, path_); } From c9463d815c703cab66be965b925fe33ee4efba5f Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 18 Jan 2015 17:34:36 -0800 Subject: [PATCH 4/4] linux: Override DIR_APP_DATA before loading .js --- brightray/browser/browser_context.cc | 26 ---------------------- brightray/browser/browser_main_parts.cc | 29 ++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/brightray/browser/browser_context.cc b/brightray/browser/browser_context.cc index d07c591ca7..cb374ff4c9 100644 --- a/brightray/browser/browser_context.cc +++ b/brightray/browser/browser_context.cc @@ -9,7 +9,6 @@ #include "browser/network_delegate.h" #include "common/application_info.h" -#include "base/environment.h" #include "base/files/file_path.h" #include "base/path_service.h" #include "base/prefs/json_pref_store.h" @@ -20,31 +19,10 @@ #include "content/public/browser/resource_context.h" #include "content/public/browser/storage_partition.h" -#if defined(OS_LINUX) -#include "base/nix/xdg_util.h" -#endif - using content::BrowserThread; namespace brightray { -namespace { - -#if defined(OS_LINUX) -void OverrideLinuxAppDataPath() { - base::FilePath path; - if (PathService::Get(DIR_APP_DATA, &path)) - return; - scoped_ptr env(base::Environment::Create()); - path = base::nix::GetXDGDirectory(env.get(), - base::nix::kXdgConfigHomeEnvVar, - base::nix::kDotConfigDir); - PathService::Override(DIR_APP_DATA, path); -} -#endif - -} // namespace - class BrowserContext::ResourceContext : public content::ResourceContext { public: ResourceContext() : getter_(nullptr) {} @@ -69,10 +47,6 @@ BrowserContext::BrowserContext() : resource_context_(new ResourceContext) { } void BrowserContext::Initialize() { -#if defined(OS_LINUX) - OverrideLinuxAppDataPath(); -#endif - if (!PathService::Get(DIR_USER_DATA, &path_)) { PathService::Get(DIR_APP_DATA, &path_); path_ = path_.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName())); diff --git a/brightray/browser/browser_main_parts.cc b/brightray/browser/browser_main_parts.cc index e90a2f8a1c..67d50d9230 100644 --- a/brightray/browser/browser_main_parts.cc +++ b/brightray/browser/browser_main_parts.cc @@ -26,6 +26,13 @@ #include "browser/views/views_delegate.h" #endif +#if defined(OS_LINUX) +#include "base/environment.h" +#include "base/path_service.h" +#include "base/nix/xdg_util.h" +#include "browser/brightray_paths.h" +#endif + #if defined(OS_WIN) #include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util_win.h" @@ -34,9 +41,9 @@ namespace brightray { -#if defined(OS_WIN) namespace { +#if defined(OS_WIN) // gfx::Font callbacks void AdjustUIFont(LOGFONT* logfont) { l10n_util::AdjustUIFont(logfont); @@ -45,9 +52,22 @@ void AdjustUIFont(LOGFONT* logfont) { int GetMinimumFontSize() { return 10; } +#endif + +#if defined(OS_LINUX) +void OverrideLinuxAppDataPath() { + base::FilePath path; + if (PathService::Get(DIR_APP_DATA, &path)) + return; + scoped_ptr env(base::Environment::Create()); + path = base::nix::GetXDGDirectory(env.get(), + base::nix::kXdgConfigHomeEnvVar, + base::nix::kDotConfigDir); + PathService::Override(DIR_APP_DATA, path); +} +#endif } // namespace -#endif BrowserMainParts::BrowserMainParts() { } @@ -64,10 +84,13 @@ void BrowserMainParts::PreEarlyInitialization() { views::LinuxUI::SetInstance(BuildGtk2UI()); #endif +#if defined(OS_LINUX) + OverrideLinuxAppDataPath(); +#endif + InitProxyResolverV8(); } - void BrowserMainParts::ToolkitInitialized() { #if defined(USE_AURA) && defined(USE_X11) views::LinuxUI::instance()->Initialize();