sync_extension_installer.cc revision 116680a4aac90f2aa7413d9095a592090648e557
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. 4 5#include "chrome/browser/sync/test/integration/sync_extension_installer.h" 6 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" 12 13SyncedExtensionInstaller::SyncedExtensionInstaller(Profile* profile) 14 : profile_(profile), 15 weak_ptr_factory_(this) { 16 DoInstallSyncedExtensions(); 17 registrar_.Add(this, 18 chrome::NOTIFICATION_EXTENSION_UPDATING_STARTED, 19 content::Source<Profile>(profile_)); 20} 21 22SyncedExtensionInstaller::~SyncedExtensionInstaller() { 23} 24 25void SyncedExtensionInstaller::Observe( 26 int type, 27 const content::NotificationSource& source, 28 const content::NotificationDetails& details) { 29 DCHECK_EQ(chrome::NOTIFICATION_EXTENSION_UPDATING_STARTED, type); 30 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. 36 37 base::MessageLoop::current()->PostTask( 38 FROM_HERE, 39 base::Bind(&SyncedExtensionInstaller::DoInstallSyncedExtensions, 40 weak_ptr_factory_.GetWeakPtr())); 41} 42 43void SyncedExtensionInstaller::DoInstallSyncedExtensions() { 44 SyncExtensionHelper::GetInstance()->InstallExtensionsPendingForSync(profile_); 45} 46