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"
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
)
15 weak_ptr_factory_(this) {
16 DoInstallSyncedExtensions();
18 extensions::NOTIFICATION_EXTENSION_UPDATING_STARTED
,
19 content::Source
<Profile
>(profile_
));
22 SyncedExtensionInstaller::~SyncedExtensionInstaller() {
25 void SyncedExtensionInstaller::Observe(
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
37 base::MessageLoop::current()->PostTask(
39 base::Bind(&SyncedExtensionInstaller::DoInstallSyncedExtensions
,
40 weak_ptr_factory_
.GetWeakPtr()));
43 void SyncedExtensionInstaller::DoInstallSyncedExtensions() {
44 SyncExtensionHelper::GetInstance()->InstallExtensionsPendingForSync(profile_
);