Fire an error if a pref used in the UI is missing once all prefs are fetched.
[chromium-blink-merge.git] / chrome / browser / sync / test / integration / sync_extension_installer.cc
blob9d08d1a51ea787c3d9621fba832282c100d924b9
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/sync/test/integration/sync_extension_installer.h"
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "chrome/browser/chrome_notification_types.h"
10 #include "chrome/browser/sync/test/integration/sync_extension_helper.h"
11 #include "content/public/browser/notification_source.h"
13 SyncedExtensionInstaller::SyncedExtensionInstaller(Profile* profile)
14 : profile_(profile),
15 weak_ptr_factory_(this) {
16 DoInstallSyncedExtensions();
17 registrar_.Add(this,
18 extensions::NOTIFICATION_EXTENSION_UPDATING_STARTED,
19 content::Source<Profile>(profile_));
22 SyncedExtensionInstaller::~SyncedExtensionInstaller() {
25 void SyncedExtensionInstaller::Observe(
26 int type,
27 const content::NotificationSource& source,
28 const content::NotificationDetails& details) {
29 DCHECK_EQ(extensions::NOTIFICATION_EXTENSION_UPDATING_STARTED, type);
31 // The extension system is trying to check for updates. In the real world,
32 // this would be where synced extensions are asynchronously downloaded from
33 // the web store and installed. In this test framework, we use this event as
34 // a signal that it's time to asynchronously fake the installation of these
35 // extensions.
37 base::MessageLoop::current()->PostTask(
38 FROM_HERE,
39 base::Bind(&SyncedExtensionInstaller::DoInstallSyncedExtensions,
40 weak_ptr_factory_.GetWeakPtr()));
43 void SyncedExtensionInstaller::DoInstallSyncedExtensions() {
44 SyncExtensionHelper::GetInstance()->InstallExtensionsPendingForSync(profile_);