1424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// found in the LICENSE file. 4424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 5424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 6424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "base/prefs/pref_service.h" 7424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "base/prefs/testing_pref_store.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.h" 9424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_factory.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/extensions/api/signed_in_devices.h" 11424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chrome/common/pref_names.h" 12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/browser/event_router.h" 14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace extensions { 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace { 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* CreateProfileSyncServiceMock(content::BrowserContext* profile) { 21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return NULL; 22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} // namespace 24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 25424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Adds a listener and removes it. 26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)TEST(SignedInDevicesManager, UpdateListener) { 27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) scoped_ptr<TestingProfile> profile(new TestingProfile()); 28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) profile->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "foo"); 29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ProfileSyncServiceFactory::GetInstance()->SetTestingFactory( 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) profile.get(), CreateProfileSyncServiceMock); 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) SignedInDevicesManager manager(profile.get()); 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EventListenerInfo info(api::signed_in_devices::OnDeviceInfoChange::kEventName, 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "extension1", 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GURL(), 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) profile.get()); 37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Add a listener. 39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) manager.OnListenerAdded(info); 40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_EQ(manager.change_observers_.size(), 1U); 41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_EQ(manager.change_observers_[0]->extension_id(), info.extension_id); 42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Remove the listener. 44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) manager.OnListenerRemoved(info); 45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_TRUE(manager.change_observers_.empty()); 46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} // namespace extensions 48