summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorygorshenin <ygorshenin@chromium.org>2014-09-05 02:59:36 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-05 10:02:24 +0000
commita3e9d8b6ec39cb3fe8f075fe509ff29c3d3a2abb (patch)
tree001ac94ad658c233c310ee348255d77d16889ac2
parented0e64147d4360328799c153ac069a5f46e7daae (diff)
downloadchromium_src-a3e9d8b6ec39cb3fe8f075fe509ff29c3d3a2abb.zip
chromium_src-a3e9d8b6ec39cb3fe8f075fe509ff29c3d3a2abb.tar.gz
chromium_src-a3e9d8b6ec39cb3fe8f075fe509ff29c3d3a2abb.tar.bz2
Instantiation of OwnerKeyUtil is delegated to OwnerSettingsServiceFactory, as we're going to move as much as possible from OwnerSettingsService to components/ownership/* and because OwnerSettingsServiceFactory should do all platform-specific business.
BUG=398856 TEST=existing browser_tests and unit_tests Review URL: https://codereview.chromium.org/516243002 Cr-Commit-Position: refs/heads/master@{#293486}
-rw-r--r--chrome/browser/chromeos/app_mode/kiosk_app_manager.cc4
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.cc4
-rw-r--r--chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc6
-rw-r--r--chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc7
-rw-r--r--chrome/browser/chromeos/ownership/owner_settings_service.cc45
-rw-r--r--chrome/browser/chromeos/ownership/owner_settings_service.h17
-rw-r--r--chrome/browser/chromeos/ownership/owner_settings_service_factory.cc22
-rw-r--r--chrome/browser/chromeos/ownership/owner_settings_service_factory.h12
-rw-r--r--chrome/browser/chromeos/settings/device_settings_test_helper.cc4
-rw-r--r--chrome/browser/chromeos/settings/session_manager_operation_unittest.cc8
-rw-r--r--chrome/chrome_tests_unit.gypi2
-rw-r--r--components/ownership.gypi17
-rw-r--r--components/ownership/BUILD.gn15
13 files changed, 71 insertions, 92 deletions
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
index 61b1287..b6a6e5e 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
@@ -22,7 +22,7 @@
#include "chrome/browser/chromeos/app_mode/kiosk_app_external_loader.h"
#include "chrome/browser/chromeos/app_mode/kiosk_app_manager_observer.h"
#include "chrome/browser/chromeos/app_mode/kiosk_external_updater.h"
-#include "chrome/browser/chromeos/ownership/owner_settings_service.h"
+#include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h"
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
#include "chrome/browser/chromeos/policy/device_local_account.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
@@ -59,7 +59,7 @@ void OnRemoveAppCryptohomeComplete(const std::string& app,
// Check for presence of machine owner public key file.
void CheckOwnerFilePresence(bool *present) {
scoped_refptr<ownership::OwnerKeyUtil> util =
- OwnerSettingsService::MakeOwnerKeyUtil();
+ OwnerSettingsServiceFactory::GetInstance()->GetOwnerKeyUtil();
*present = util.get() && util->IsPublicKeyPresent();
}
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index a04ebbd..77b6730 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -55,7 +55,7 @@
#include "chrome/browser/chromeos/memory/oom_priority_manager.h"
#include "chrome/browser/chromeos/net/network_portal_detector_impl.h"
#include "chrome/browser/chromeos/options/cert_library.h"
-#include "chrome/browser/chromeos/ownership/owner_settings_service.h"
+#include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h"
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
#include "chrome/browser/chromeos/policy/device_local_account.h"
#include "chrome/browser/chromeos/power/idle_action_warning_observer.h"
@@ -187,7 +187,7 @@ class DBusServices {
DeviceSettingsService::Initialize();
DeviceSettingsService::Get()->SetSessionManager(
DBusThreadManager::Get()->GetSessionManagerClient(),
- OwnerSettingsService::MakeOwnerKeyUtil());
+ OwnerSettingsServiceFactory::GetInstance()->GetOwnerKeyUtil());
}
~DBusServices() {
diff --git a/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc b/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc
index ac7694a..e2d2ed2 100644
--- a/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc
+++ b/chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.cc
@@ -6,6 +6,7 @@
#include "base/thread_task_runner_handle.h"
#include "chrome/browser/chromeos/ownership/owner_settings_service.h"
+#include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "components/user_manager/user_manager.h"
#include "content/public/browser/browser_thread.h"
@@ -43,7 +44,10 @@ void ChromeCryptohomeAuthenticator::CheckSafeModeOwnership(
}
OwnerSettingsService::IsOwnerForSafeModeAsync(
- context.GetUserID(), context.GetUserIDHash(), callback);
+ context.GetUserID(),
+ context.GetUserIDHash(),
+ OwnerSettingsServiceFactory::GetInstance()->GetOwnerKeyUtil(),
+ callback);
}
} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc b/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc
index 454ffdc..afd8863 100644
--- a/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc
+++ b/chrome/browser/chromeos/login/auth/cryptohome_authenticator_unittest.cc
@@ -134,7 +134,9 @@ class CryptohomeAuthenticatorTest : public testing::Test {
user_manager_enabler_(user_manager_),
mock_caller_(NULL),
mock_homedir_methods_(NULL),
- owner_key_util_(new ownership::MockOwnerKeyUtil) {
+ owner_key_util_(new ownership::MockOwnerKeyUtil()) {
+ OwnerSettingsServiceFactory::GetInstance()->SetOwnerKeyUtilForTesting(
+ owner_key_util_);
user_context_.SetKey(Key("fakepass"));
user_context_.SetUserIDHash("me_nowhere_com_hash");
const user_manager::User* user =
@@ -165,15 +167,12 @@ class CryptohomeAuthenticatorTest : public testing::Test {
SystemSaltGetter::Initialize();
- OwnerSettingsService::SetOwnerKeyUtilForTesting(owner_key_util_);
-
auth_ = new ChromeCryptohomeAuthenticator(&consumer_);
state_.reset(new TestAttemptState(user_context_, false));
}
// Tears down the test fixture.
virtual void TearDown() {
- OwnerSettingsService::SetOwnerKeyUtilForTesting(NULL);
SystemSaltGetter::Shutdown();
DBusThreadManager::Shutdown();
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service.cc b/chrome/browser/chromeos/ownership/owner_settings_service.cc
index e2b3805..9246a05 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service.cc
+++ b/chrome/browser/chromeos/ownership/owner_settings_service.cc
@@ -9,17 +9,13 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/command_line.h"
-#include "base/path_service.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/session_manager_operation.h"
#include "chrome/browser/profiles/profile.h"
-#include "chromeos/chromeos_paths.h"
#include "chromeos/dbus/dbus_thread_manager.h"
-#include "components/ownership/owner_key_util_impl.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_details.h"
@@ -43,7 +39,6 @@ namespace chromeos {
namespace {
-scoped_refptr<OwnerKeyUtil>* g_owner_key_util_for_testing = NULL;
DeviceSettingsService* g_device_settings_service_for_testing = NULL;
bool IsOwnerInTests(const std::string& user_id) {
@@ -178,12 +173,8 @@ bool DoesPrivateKeyExistAsyncHelper(
// Checks whether NSS slots with private key are mounted or
// not. Responds via |callback|.
void DoesPrivateKeyExistAsync(
+ const scoped_refptr<OwnerKeyUtil>& owner_key_util,
const OwnerSettingsService::IsOwnerCallback& callback) {
- scoped_refptr<OwnerKeyUtil> owner_key_util;
- if (g_owner_key_util_for_testing)
- owner_key_util = *g_owner_key_util_for_testing;
- else
- owner_key_util = OwnerSettingsService::MakeOwnerKeyUtil();
if (!owner_key_util) {
callback.Run(false);
return;
@@ -241,9 +232,11 @@ bool CheckManagementModeTransition(em::PolicyData::ManagementMode current_mode,
} // namespace
-OwnerSettingsService::OwnerSettingsService(Profile* profile)
+OwnerSettingsService::OwnerSettingsService(
+ Profile* profile,
+ const scoped_refptr<OwnerKeyUtil>& owner_key_util)
: profile_(profile),
- owner_key_util_(MakeOwnerKeyUtil()),
+ owner_key_util_(owner_key_util),
waiting_for_profile_creation_(true),
waiting_for_tpm_token_(true),
weak_factory_(this) {
@@ -385,6 +378,7 @@ void OwnerSettingsService::OwnerKeySet(bool success) {
void OwnerSettingsService::IsOwnerForSafeModeAsync(
const std::string& user_id,
const std::string& user_hash,
+ const scoped_refptr<OwnerKeyUtil>& owner_key_util,
const IsOwnerCallback& callback) {
CHECK(chromeos::LoginState::Get()->IsInSafeMode());
@@ -397,30 +391,7 @@ void OwnerSettingsService::IsOwnerForSafeModeAsync(
user_id,
user_hash,
ProfileHelper::GetProfilePathByUserIdHash(user_hash)),
- base::Bind(&DoesPrivateKeyExistAsync, callback));
-}
-
-// static
-scoped_refptr<ownership::OwnerKeyUtil>
-OwnerSettingsService::MakeOwnerKeyUtil() {
- base::FilePath public_key_path;
- if (!PathService::Get(chromeos::FILE_OWNER_KEY, &public_key_path))
- return NULL;
- return new ownership::OwnerKeyUtilImpl(public_key_path);
-}
-
-// static
-void OwnerSettingsService::SetOwnerKeyUtilForTesting(
- const scoped_refptr<OwnerKeyUtil>& owner_key_util) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (g_owner_key_util_for_testing) {
- delete g_owner_key_util_for_testing;
- g_owner_key_util_for_testing = NULL;
- }
- if (owner_key_util.get()) {
- g_owner_key_util_for_testing = new scoped_refptr<OwnerKeyUtil>();
- *g_owner_key_util_for_testing = owner_key_util;
- }
+ base::Bind(&DoesPrivateKeyExistAsync, owner_key_util, callback));
}
// static
@@ -532,8 +503,6 @@ void OwnerSettingsService::HandleError(DeviceSettingsService::Status status,
scoped_refptr<OwnerKeyUtil> OwnerSettingsService::GetOwnerKeyUtil() {
DCHECK(thread_checker_.CalledOnValidThread());
- if (g_owner_key_util_for_testing)
- return *g_owner_key_util_for_testing;
return owner_key_util_;
}
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service.h b/chrome/browser/chromeos/ownership/owner_settings_service.h
index a86c084..3419d4f 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service.h
+++ b/chrome/browser/chromeos/ownership/owner_settings_service.h
@@ -71,14 +71,11 @@ class OwnerSettingsService : public DeviceSettingsService::PrivateKeyDelegate,
// Checks if the user is the device owner, without the user profile having to
// been initialized. Should be used only if login state is in safe mode.
- static void IsOwnerForSafeModeAsync(const std::string& user_id,
- const std::string& user_hash,
- const IsOwnerCallback& callback);
-
- static scoped_refptr<ownership::OwnerKeyUtil> MakeOwnerKeyUtil();
-
- static void SetOwnerKeyUtilForTesting(
- const scoped_refptr<ownership::OwnerKeyUtil>& owner_key_util);
+ static void IsOwnerForSafeModeAsync(
+ const std::string& user_id,
+ const std::string& user_hash,
+ const scoped_refptr<ownership::OwnerKeyUtil>& owner_key_util,
+ const IsOwnerCallback& callback);
static void SetDeviceSettingsServiceForTesting(
DeviceSettingsService* device_settings_service);
@@ -86,7 +83,9 @@ class OwnerSettingsService : public DeviceSettingsService::PrivateKeyDelegate,
private:
friend class OwnerSettingsServiceFactory;
- explicit OwnerSettingsService(Profile* profile);
+ OwnerSettingsService(
+ Profile* profile,
+ const scoped_refptr<ownership::OwnerKeyUtil>& owner_key_util);
// Reloads private key from profile's NSS slots. Responds via call
// to OnPrivateKeyLoaded().
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_factory.cc b/chrome/browser/chromeos/ownership/owner_settings_service_factory.cc
index a307888..4f2e79d 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service_factory.cc
+++ b/chrome/browser/chromeos/ownership/owner_settings_service_factory.cc
@@ -4,10 +4,14 @@
#include "chrome/browser/chromeos/ownership/owner_settings_service_factory.h"
+#include "base/path_service.h"
#include "chrome/browser/chromeos/ownership/owner_settings_service.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile.h"
+#include "chromeos/chromeos_paths.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/ownership/owner_key_util.h"
+#include "components/ownership/owner_key_util_impl.h"
namespace chromeos {
@@ -32,13 +36,29 @@ OwnerSettingsServiceFactory* OwnerSettingsServiceFactory::GetInstance() {
return Singleton<OwnerSettingsServiceFactory>::get();
}
+scoped_refptr<ownership::OwnerKeyUtil>
+OwnerSettingsServiceFactory::GetOwnerKeyUtil() {
+ if (owner_key_util_.get())
+ return owner_key_util_;
+ base::FilePath public_key_path;
+ if (!PathService::Get(chromeos::FILE_OWNER_KEY, &public_key_path))
+ return NULL;
+ owner_key_util_ = new ownership::OwnerKeyUtilImpl(public_key_path);
+ return owner_key_util_;
+}
+
+void OwnerSettingsServiceFactory::SetOwnerKeyUtilForTesting(
+ const scoped_refptr<ownership::OwnerKeyUtil>& owner_key_util) {
+ owner_key_util_ = owner_key_util;
+}
+
// static
KeyedService* OwnerSettingsServiceFactory::BuildInstanceFor(
content::BrowserContext* browser_context) {
Profile* profile = static_cast<Profile*>(browser_context);
if (profile->IsGuestSession() || ProfileHelper::IsSigninProfile(profile))
return NULL;
- return new OwnerSettingsService(profile);
+ return new OwnerSettingsService(profile, GetInstance()->GetOwnerKeyUtil());
}
bool OwnerSettingsServiceFactory::ServiceIsCreatedWithBrowserContext() const {
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_factory.h b/chrome/browser/chromeos/ownership/owner_settings_service_factory.h
index e98773a..597656b 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service_factory.h
+++ b/chrome/browser/chromeos/ownership/owner_settings_service_factory.h
@@ -9,12 +9,17 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
+#include "base/memory/ref_counted.h"
#include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
class KeyedService;
class Profile;
+namespace ownership {
+class OwnerKeyUtil;
+}
+
namespace chromeos {
class OwnerSettingsService;
@@ -25,6 +30,11 @@ class OwnerSettingsServiceFactory : public BrowserContextKeyedServiceFactory {
static OwnerSettingsServiceFactory* GetInstance();
+ scoped_refptr<ownership::OwnerKeyUtil> GetOwnerKeyUtil();
+
+ void SetOwnerKeyUtilForTesting(
+ const scoped_refptr<ownership::OwnerKeyUtil>& owner_key_util);
+
private:
friend struct DefaultSingletonTraits<OwnerSettingsServiceFactory>;
@@ -40,6 +50,8 @@ class OwnerSettingsServiceFactory : public BrowserContextKeyedServiceFactory {
virtual KeyedService* BuildServiceInstanceFor(
content::BrowserContext* browser_context) const OVERRIDE;
+ scoped_refptr<ownership::OwnerKeyUtil> owner_key_util_;
+
DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceFactory);
};
diff --git a/chrome/browser/chromeos/settings/device_settings_test_helper.cc b/chrome/browser/chromeos/settings/device_settings_test_helper.cc
index 19c82c3..06fd21c 100644
--- a/chrome/browser/chromeos/settings/device_settings_test_helper.cc
+++ b/chrome/browser/chromeos/settings/device_settings_test_helper.cc
@@ -207,6 +207,8 @@ DeviceSettingsTestBase::DeviceSettingsTestBase()
: user_manager_(new FakeUserManager()),
user_manager_enabler_(user_manager_),
owner_key_util_(new ownership::MockOwnerKeyUtil()) {
+ OwnerSettingsServiceFactory::GetInstance()->SetOwnerKeyUtilForTesting(
+ owner_key_util_);
}
DeviceSettingsTestBase::~DeviceSettingsTestBase() {
@@ -226,14 +228,12 @@ void DeviceSettingsTestBase::SetUp() {
device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
device_settings_service_.SetSessionManager(&device_settings_test_helper_,
owner_key_util_);
- OwnerSettingsService::SetOwnerKeyUtilForTesting(owner_key_util_.get());
OwnerSettingsService::SetDeviceSettingsServiceForTesting(
&device_settings_service_);
profile_.reset(new TestingProfile());
}
void DeviceSettingsTestBase::TearDown() {
- OwnerSettingsService::SetOwnerKeyUtilForTesting(NULL);
OwnerSettingsService::SetDeviceSettingsServiceForTesting(NULL);
FlushDeviceSettings();
device_settings_service_.UnsetSessionManager();
diff --git a/chrome/browser/chromeos/settings/session_manager_operation_unittest.cc b/chrome/browser/chromeos/settings/session_manager_operation_unittest.cc
index 86568f5..7c5271d 100644
--- a/chrome/browser/chromeos/settings/session_manager_operation_unittest.cc
+++ b/chrome/browser/chromeos/settings/session_manager_operation_unittest.cc
@@ -39,19 +39,19 @@ class SessionManagerOperationTest : public testing::Test {
: ui_thread_(content::BrowserThread::UI, &message_loop_),
file_thread_(content::BrowserThread::FILE, &message_loop_),
owner_key_util_(new ownership::MockOwnerKeyUtil()),
- validated_(false) {}
+ validated_(false) {
+ OwnerSettingsServiceFactory::GetInstance()->SetOwnerKeyUtilForTesting(
+ owner_key_util_);
+ }
virtual void SetUp() OVERRIDE {
policy_.payload().mutable_pinned_apps()->add_app_id("fake-app");
policy_.Build();
profile_.reset(new TestingProfile());
- OwnerSettingsService::SetOwnerKeyUtilForTesting(owner_key_util_);
service_ = OwnerSettingsServiceFactory::GetForProfile(profile_.get());
}
- void TearDown() { OwnerSettingsService::SetOwnerKeyUtilForTesting(NULL); }
-
MOCK_METHOD2(OnOperationCompleted,
void(SessionManagerOperation*, DeviceSettingsService::Status));
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 7c8a256..28872fa 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -26,7 +26,7 @@
'../components/components.gyp:invalidation_test_support',
'../components/components.gyp:metrics_test_support',
'../components/components.gyp:omnibox_test_support',
- '../components/components.gyp:ownership_test_support',
+ '../components/components.gyp:ownership',
'../components/components.gyp:password_manager_core_browser_test_support',
'../components/components.gyp:pref_registry_test_support',
'../components/components.gyp:search_engines_test_support',
diff --git a/components/ownership.gypi b/components/ownership.gypi
index fb6d41a..46a7a51 100644
--- a/components/ownership.gypi
+++ b/components/ownership.gypi
@@ -14,25 +14,12 @@
'OWNERSHIP_IMPLEMENTATION',
],
'sources': [
+ 'ownership/mock_owner_key_util.cc',
+ 'ownership/mock_owner_key_util.h',
'ownership/owner_key_util.cc',
'ownership/owner_key_util.h',
'ownership/owner_key_util_impl.cc',
'ownership/owner_key_util_impl.h',
],
- },
- { 'target_name': 'ownership_test_support',
- 'type': '<(component)',
- 'dependencies': [
- '<(DEPTH)/base/base.gyp:base',
- '<(DEPTH)/crypto/crypto.gyp:crypto',
- 'ownership',
- ],
- 'defines': [
- 'OWNERSHIP_IMPLEMENTATION',
- ],
- 'sources': [
- 'ownership/mock_owner_key_util.cc',
- 'ownership/mock_owner_key_util.h',
- ],
}],
}
diff --git a/components/ownership/BUILD.gn b/components/ownership/BUILD.gn
index b63ca1b..067f71f 100644
--- a/components/ownership/BUILD.gn
+++ b/components/ownership/BUILD.gn
@@ -4,6 +4,8 @@
component("ownership") {
sources = [
+ "mock_owner_key_util.cc",
+ "mock_owner_key_util.h",
"owner_key_util.cc",
"owner_key_util.h",
"owner_key_util_impl.cc",
@@ -20,19 +22,6 @@ component("ownership") {
]
}
-component("test_support") {
- sources = [
- "mock_owner_key_util.cc",
- "mock_owner_key_util.h",
- ]
-
- deps = [
- ":ownership",
- "//base",
- "//crypto",
- ]
-}
-
source_set("unit_tests") {
sources = ["owner_key_util_unittest.cc"]