13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/command_line.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/prefs/pref_service.h" 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/run_loop.h" 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/activity_log/activity_log.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/api/activity_log_private/activity_log_private_api.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/extensions/test_extension_system.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/common/pref_names.h" 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/chrome_render_view_host_test_harness.h" 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/browser/uninstall_reason.h" 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension_builder.h" 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined OS_CHROMEOS 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h" 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h" 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h" 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace extensions { 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kExtensionID = "abjoigjokfeibfhiahiijggogladbmfm"; 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class ActivityLogEnabledTest : public ChromeRenderViewHostTestHarness { 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) protected: 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void SetUp() OVERRIDE { 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ChromeRenderViewHostTestHarness::SetUp(); 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined OS_CHROMEOS 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) test_user_manager_.reset(new chromeos::ScopedTestUserManager()); 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void TearDown() OVERRIDE { 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined OS_CHROMEOS 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) test_user_manager_.reset(); 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ChromeRenderViewHostTestHarness::TearDown(); 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined OS_CHROMEOS 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chromeos::ScopedTestCrosSettings test_cros_settings_; 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<chromeos::ScopedTestUserManager> test_user_manager_; 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST_F(ActivityLogEnabledTest, NoSwitch) { 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile( 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_FALSE( 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log = ActivityLog::GetInstance(profile.get()); 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log->IsDatabaseEnabled()); 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log->IsWatchdogAppActive()); 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST_F(ActivityLogEnabledTest, CommandLineSwitch) { 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile1( 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile2( 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CommandLine command_line(CommandLine::NO_PROGRAM); 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CommandLine saved_cmdline_ = *CommandLine::ForCurrentProcess(); 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CommandLine::ForCurrentProcess()->AppendSwitch( 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) switches::kEnableExtensionActivityLogging); 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log1 = ActivityLog::GetInstance(profile1.get()); 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *CommandLine::ForCurrentProcess() = saved_cmdline_; 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log2 = ActivityLog::GetInstance(profile2.get()); 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsDatabaseEnabled()); 8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsDatabaseEnabled()); 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log1->IsWatchdogAppActive()); 8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsWatchdogAppActive()); 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST_F(ActivityLogEnabledTest, PrefSwitch) { 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile1( 923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile2( 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<TestingProfile> profile3( 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile3->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->SetInteger(prefs::kWatchdogExtensionActive, 1); 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile3->GetPrefs()->SetInteger(prefs::kWatchdogExtensionActive, 2); 1073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log1 = ActivityLog::GetInstance(profile1.get()); 1083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log2 = ActivityLog::GetInstance(profile2.get()); 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ActivityLog* activity_log3 = ActivityLog::GetInstance(profile3.get()); 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(1, 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(2, 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile3->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 11758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsWatchdogAppActive()); 11858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsWatchdogAppActive()); 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(activity_log3->IsWatchdogAppActive()); 12058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsDatabaseEnabled()); 12158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsDatabaseEnabled()); 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(activity_log3->IsDatabaseEnabled()); 1233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST_F(ActivityLogEnabledTest, WatchdogSwitch) { 1263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CommandLine command_line(CommandLine::NO_PROGRAM); 1273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile1( 1283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<TestingProfile> profile2( 1303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 1313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Extension service is destroyed by the profile. 1323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionService* extension_service1 = 1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestExtensionSystem*>( 1343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionSystem::Get(profile1.get()))->CreateExtensionService( 1353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) &command_line, base::FilePath(), false); 1363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<TestExtensionSystem*>( 1373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionSystem::Get(profile1.get()))->SetReady(); 1383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log1 = ActivityLog::GetInstance(profile1.get()); 1403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ActivityLog* activity_log2 = ActivityLog::GetInstance(profile2.get()); 1413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Allow Activity Log to install extension tracker. 1433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::RunLoop().RunUntilIdle(); 1443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_refptr<Extension> extension = 1513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ExtensionBuilder() 1523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .SetManifest(DictionaryBuilder() 1533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .Set("name", "Watchdog Extension ") 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .Set("version", "1.0.0") 1553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .Set("manifest_version", 2)) 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .SetID(kExtensionID) 1573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .Build(); 1583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) extension_service1->AddExtension(extension.get()); 1593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(1, 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 16458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsWatchdogAppActive()); 16558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsWatchdogAppActive()); 16658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsDatabaseEnabled()); 16758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsDatabaseEnabled()); 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service1->DisableExtension(kExtensionID, 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Extension::DISABLE_USER_ACTION); 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 17658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log1->IsWatchdogAppActive()); 17758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsWatchdogAppActive()); 17858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log1->IsDatabaseEnabled()); 17958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsDatabaseEnabled()); 1803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service1->EnableExtension(kExtensionID); 1823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(1, 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 18758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsWatchdogAppActive()); 18858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsWatchdogAppActive()); 18958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log1->IsDatabaseEnabled()); 19058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsDatabaseEnabled()); 1913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch extension_service1->UninstallExtension( 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) kExtensionID, 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extensions::UNINSTALL_REASON_FOR_TESTING, 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&base::DoNothing), 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile2->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 20258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log1->IsWatchdogAppActive()); 20358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsWatchdogAppActive()); 20458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log1->IsDatabaseEnabled()); 20558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log2->IsDatabaseEnabled()); 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_refptr<Extension> extension2 = 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExtensionBuilder() 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .SetManifest(DictionaryBuilder() 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .Set("name", "Watchdog Extension ") 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .Set("version", "1.0.0") 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .Set("manifest_version", 2)) 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .SetID("fpofdchlamddhnajleknffcbmnjfahpg") 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .Build(); 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service1->AddExtension(extension.get()); 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service1->AddExtension(extension2.get()); 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(2, 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 2195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(activity_log1->IsDatabaseEnabled()); 2205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service1->DisableExtension(kExtensionID, 2215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Extension::DISABLE_USER_ACTION); 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extension_service1->DisableExtension("fpofdchlamddhnajleknffcbmnjfahpg", 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Extension::DISABLE_USER_ACTION); 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile1->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(activity_log1->IsDatabaseEnabled()); 22758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 22858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 22958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(ActivityLogEnabledTest, AppAndCommandLine) { 23058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Set the command line switch. 23158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CommandLine command_line(CommandLine::NO_PROGRAM); 23258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CommandLine saved_cmdline_ = *CommandLine::ForCurrentProcess(); 23358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CommandLine::ForCurrentProcess()->AppendSwitch( 23458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) switches::kEnableExtensionActivityLogging); 23558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 23658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) scoped_ptr<TestingProfile> profile( 23758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) static_cast<TestingProfile*>(CreateBrowserContext())); 23858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Extension service is destroyed by the profile. 23958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ExtensionService* extension_service = 24058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) static_cast<TestExtensionSystem*>( 24158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ExtensionSystem::Get(profile.get()))->CreateExtensionService( 24258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) &command_line, base::FilePath(), false); 24358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) static_cast<TestExtensionSystem*>( 24458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ExtensionSystem::Get(profile.get()))->SetReady(); 24558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 24658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ActivityLog* activity_log = ActivityLog::GetInstance(profile.get()); 24758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Allow Activity Log to install extension tracker. 24858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 24958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 25058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log->IsDatabaseEnabled()); 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 2525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 25358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log->IsWatchdogAppActive()); 25458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 25558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Enable the extension. 25658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) scoped_refptr<Extension> extension = 25758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ExtensionBuilder() 25858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) .SetManifest(DictionaryBuilder() 25958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) .Set("name", "Watchdog Extension ") 26058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) .Set("version", "1.0.0") 26158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) .Set("manifest_version", 2)) 2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) .SetID(kExtensionID) 26358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) .Build(); 26458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) extension_service->AddExtension(extension.get()); 26558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 26658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log->IsDatabaseEnabled()); 2675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(1, 2685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 26958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log->IsWatchdogAppActive()); 27058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch extension_service->UninstallExtension( 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) kExtensionID, 2735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extensions::UNINSTALL_REASON_FOR_TESTING, 2745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&base::DoNothing), 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NULL); 27658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 27758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_TRUE(activity_log->IsDatabaseEnabled()); 2785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, 2795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive)); 28058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) EXPECT_FALSE(activity_log->IsWatchdogAppActive()); 28158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 28258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Cleanup. 28358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) *CommandLine::ForCurrentProcess() = saved_cmdline_; 2843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 2853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace extensions 287