| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/activity_log/activity_log.h" | 5 #include "chrome/browser/extensions/activity_log/activity_log.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 : database_policy_(NULL), | 353 : database_policy_(NULL), |
| 354 database_policy_type_(ActivityLogPolicy::POLICY_INVALID), | 354 database_policy_type_(ActivityLogPolicy::POLICY_INVALID), |
| 355 uma_policy_(NULL), | 355 uma_policy_(NULL), |
| 356 profile_(Profile::FromBrowserContext(context)), | 356 profile_(Profile::FromBrowserContext(context)), |
| 357 db_enabled_(false), | 357 db_enabled_(false), |
| 358 testing_mode_(false), | 358 testing_mode_(false), |
| 359 has_threads_(true), | 359 has_threads_(true), |
| 360 extension_registry_observer_(this), | 360 extension_registry_observer_(this), |
| 361 watchdog_apps_active_(0) { | 361 watchdog_apps_active_(0) { |
| 362 // This controls whether logging statements are printed & which policy is set. | 362 // This controls whether logging statements are printed & which policy is set. |
| 363 testing_mode_ = CommandLine::ForCurrentProcess()->HasSwitch( | 363 testing_mode_ = base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 364 switches::kEnableExtensionActivityLogTesting); | 364 switches::kEnableExtensionActivityLogTesting); |
| 365 | 365 |
| 366 // Check if the watchdog extension is previously installed and active. | 366 // Check if the watchdog extension is previously installed and active. |
| 367 watchdog_apps_active_ = | 367 watchdog_apps_active_ = |
| 368 profile_->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive); | 368 profile_->GetPrefs()->GetInteger(prefs::kWatchdogExtensionActive); |
| 369 | 369 |
| 370 observers_ = new ObserverListThreadSafe<Observer>; | 370 observers_ = new ObserverListThreadSafe<Observer>; |
| 371 | 371 |
| 372 // Check that the right threads exist for logging to the database. | 372 // Check that the right threads exist for logging to the database. |
| 373 // If not, we shouldn't try to do things that require them. | 373 // If not, we shouldn't try to do things that require them. |
| 374 if (!BrowserThread::IsMessageLoopValid(BrowserThread::DB) || | 374 if (!BrowserThread::IsMessageLoopValid(BrowserThread::DB) || |
| 375 !BrowserThread::IsMessageLoopValid(BrowserThread::FILE) || | 375 !BrowserThread::IsMessageLoopValid(BrowserThread::FILE) || |
| 376 !BrowserThread::IsMessageLoopValid(BrowserThread::IO)) { | 376 !BrowserThread::IsMessageLoopValid(BrowserThread::IO)) { |
| 377 has_threads_ = false; | 377 has_threads_ = false; |
| 378 } | 378 } |
| 379 | 379 |
| 380 db_enabled_ = has_threads_ | 380 db_enabled_ = |
| 381 && (CommandLine::ForCurrentProcess()-> | 381 has_threads_ && (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 382 HasSwitch(switches::kEnableExtensionActivityLogging) | 382 switches::kEnableExtensionActivityLogging) || |
| 383 || watchdog_apps_active_); | 383 watchdog_apps_active_); |
| 384 | 384 |
| 385 ExtensionSystem::Get(profile_)->ready().Post( | 385 ExtensionSystem::Get(profile_)->ready().Post( |
| 386 FROM_HERE, | 386 FROM_HERE, |
| 387 base::Bind(&ActivityLog::StartObserving, base::Unretained(this))); | 387 base::Bind(&ActivityLog::StartObserving, base::Unretained(this))); |
| 388 | 388 |
| 389 if (!profile_->IsOffTheRecord()) | 389 if (!profile_->IsOffTheRecord()) |
| 390 uma_policy_ = new UmaPolicy(profile_); | 390 uma_policy_ = new UmaPolicy(profile_); |
| 391 | 391 |
| 392 ChooseDatabasePolicy(); | 392 ChooseDatabasePolicy(); |
| 393 } | 393 } |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 } | 473 } |
| 474 | 474 |
| 475 void ActivityLog::OnExtensionUnloaded(content::BrowserContext* browser_context, | 475 void ActivityLog::OnExtensionUnloaded(content::BrowserContext* browser_context, |
| 476 const Extension* extension, | 476 const Extension* extension, |
| 477 UnloadedExtensionInfo::Reason reason) { | 477 UnloadedExtensionInfo::Reason reason) { |
| 478 if (!ActivityLogAPI::IsExtensionWhitelisted(extension->id())) return; | 478 if (!ActivityLogAPI::IsExtensionWhitelisted(extension->id())) return; |
| 479 watchdog_apps_active_--; | 479 watchdog_apps_active_--; |
| 480 profile_->GetPrefs()->SetInteger(prefs::kWatchdogExtensionActive, | 480 profile_->GetPrefs()->SetInteger(prefs::kWatchdogExtensionActive, |
| 481 watchdog_apps_active_); | 481 watchdog_apps_active_); |
| 482 if (watchdog_apps_active_ == 0 && | 482 if (watchdog_apps_active_ == 0 && |
| 483 !CommandLine::ForCurrentProcess()->HasSwitch( | 483 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 484 switches::kEnableExtensionActivityLogging)) { | 484 switches::kEnableExtensionActivityLogging)) { |
| 485 db_enabled_ = false; | 485 db_enabled_ = false; |
| 486 } | 486 } |
| 487 } | 487 } |
| 488 | 488 |
| 489 // OnExtensionUnloaded will also be called right before this. | 489 // OnExtensionUnloaded will also be called right before this. |
| 490 void ActivityLog::OnExtensionUninstalled( | 490 void ActivityLog::OnExtensionUninstalled( |
| 491 content::BrowserContext* browser_context, | 491 content::BrowserContext* browser_context, |
| 492 const Extension* extension, | 492 const Extension* extension, |
| 493 extensions::UninstallReason reason) { | 493 extensions::UninstallReason reason) { |
| 494 if (ActivityLogAPI::IsExtensionWhitelisted(extension->id()) && | 494 if (ActivityLogAPI::IsExtensionWhitelisted(extension->id()) && |
| 495 !CommandLine::ForCurrentProcess()->HasSwitch( | 495 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 496 switches::kEnableExtensionActivityLogging) && | 496 switches::kEnableExtensionActivityLogging) && |
| 497 watchdog_apps_active_ == 0) { | 497 watchdog_apps_active_ == 0) { |
| 498 DeleteDatabase(); | 498 DeleteDatabase(); |
| 499 } else if (database_policy_) { | 499 } else if (database_policy_) { |
| 500 database_policy_->RemoveExtensionData(extension->id()); | 500 database_policy_->RemoveExtensionData(extension->id()); |
| 501 } | 501 } |
| 502 } | 502 } |
| 503 | 503 |
| 504 void ActivityLog::AddObserver(ActivityLog::Observer* observer) { | 504 void ActivityLog::AddObserver(ActivityLog::Observer* observer) { |
| 505 observers_->AddObserver(observer); | 505 observers_->AddObserver(observer); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 database_policy_->DeleteDatabase(); | 674 database_policy_->DeleteDatabase(); |
| 675 } | 675 } |
| 676 | 676 |
| 677 template <> | 677 template <> |
| 678 void BrowserContextKeyedAPIFactory<ActivityLog>::DeclareFactoryDependencies() { | 678 void BrowserContextKeyedAPIFactory<ActivityLog>::DeclareFactoryDependencies() { |
| 679 DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); | 679 DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); |
| 680 DependsOn(ExtensionRegistryFactory::GetInstance()); | 680 DependsOn(ExtensionRegistryFactory::GetInstance()); |
| 681 } | 681 } |
| 682 | 682 |
| 683 } // namespace extensions | 683 } // namespace extensions |
| OLD | NEW |