| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/api/developer_private/developer_private_api.
h" | 5 #include "chrome/browser/extensions/api/developer_private/developer_private_api.
h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/files/file_util.h" | 11 #include "base/files/file_util.h" |
| 11 #include "base/lazy_instance.h" | 12 #include "base/lazy_instance.h" |
| 12 #include "base/metrics/histogram_macros.h" | 13 #include "base/metrics/histogram_macros.h" |
| 13 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
| 16 #include "chrome/browser/devtools/devtools_window.h" | 17 #include "chrome/browser/devtools/devtools_window.h" |
| 17 #include "chrome/browser/extensions/api/developer_private/developer_private_mang
le.h" | 18 #include "chrome/browser/extensions/api/developer_private/developer_private_mang
le.h" |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 info->is_incognito_available = | 166 info->is_incognito_available = |
| 166 IncognitoModePrefs::GetAvailability(prefs) != | 167 IncognitoModePrefs::GetAvailability(prefs) != |
| 167 IncognitoModePrefs::DISABLED; | 168 IncognitoModePrefs::DISABLED; |
| 168 info->in_developer_mode = | 169 info->in_developer_mode = |
| 169 !info->is_supervised && | 170 !info->is_supervised && |
| 170 prefs->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 171 prefs->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
| 171 info->app_info_dialog_enabled = CanShowAppInfoDialog(); | 172 info->app_info_dialog_enabled = CanShowAppInfoDialog(); |
| 172 info->can_load_unpacked = | 173 info->can_load_unpacked = |
| 173 !ExtensionManagementFactory::GetForBrowserContext(profile) | 174 !ExtensionManagementFactory::GetForBrowserContext(profile) |
| 174 ->BlacklistedByDefault(); | 175 ->BlacklistedByDefault(); |
| 175 return info.Pass(); | 176 return info; |
| 176 } | 177 } |
| 177 | 178 |
| 178 } // namespace | 179 } // namespace |
| 179 | 180 |
| 180 namespace ChoosePath = api::developer_private::ChoosePath; | 181 namespace ChoosePath = api::developer_private::ChoosePath; |
| 181 namespace GetItemsInfo = api::developer_private::GetItemsInfo; | 182 namespace GetItemsInfo = api::developer_private::GetItemsInfo; |
| 182 namespace PackDirectory = api::developer_private::PackDirectory; | 183 namespace PackDirectory = api::developer_private::PackDirectory; |
| 183 namespace Reload = api::developer_private::Reload; | 184 namespace Reload = api::developer_private::Reload; |
| 184 | 185 |
| 185 static base::LazyInstance<BrowserContextKeyedAPIFactory<DeveloperPrivateAPI> > | 186 static base::LazyInstance<BrowserContextKeyedAPIFactory<DeveloperPrivateAPI> > |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 void DeveloperPrivateEventRouter::OnExtensionDisableReasonsChanged( | 345 void DeveloperPrivateEventRouter::OnExtensionDisableReasonsChanged( |
| 345 const std::string& extension_id, int disable_reasons) { | 346 const std::string& extension_id, int disable_reasons) { |
| 346 BroadcastItemStateChanged(developer::EVENT_TYPE_PREFS_CHANGED, extension_id); | 347 BroadcastItemStateChanged(developer::EVENT_TYPE_PREFS_CHANGED, extension_id); |
| 347 } | 348 } |
| 348 | 349 |
| 349 void DeveloperPrivateEventRouter::OnExtensionManagementSettingsChanged() { | 350 void DeveloperPrivateEventRouter::OnExtensionManagementSettingsChanged() { |
| 350 scoped_ptr<base::ListValue> args(new base::ListValue()); | 351 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 351 args->Append(CreateProfileInfo(profile_)->ToValue()); | 352 args->Append(CreateProfileInfo(profile_)->ToValue()); |
| 352 scoped_ptr<Event> event( | 353 scoped_ptr<Event> event( |
| 353 new Event(events::DEVELOPER_PRIVATE_ON_PROFILE_STATE_CHANGED, | 354 new Event(events::DEVELOPER_PRIVATE_ON_PROFILE_STATE_CHANGED, |
| 354 developer::OnProfileStateChanged::kEventName, args.Pass())); | 355 developer::OnProfileStateChanged::kEventName, std::move(args))); |
| 355 event_router_->BroadcastEvent(event.Pass()); | 356 event_router_->BroadcastEvent(std::move(event)); |
| 356 } | 357 } |
| 357 | 358 |
| 358 void DeveloperPrivateEventRouter::ExtensionWarningsChanged( | 359 void DeveloperPrivateEventRouter::ExtensionWarningsChanged( |
| 359 const ExtensionIdSet& affected_extensions) { | 360 const ExtensionIdSet& affected_extensions) { |
| 360 for (const ExtensionId& id : affected_extensions) | 361 for (const ExtensionId& id : affected_extensions) |
| 361 BroadcastItemStateChanged(developer::EVENT_TYPE_WARNINGS_CHANGED, id); | 362 BroadcastItemStateChanged(developer::EVENT_TYPE_WARNINGS_CHANGED, id); |
| 362 } | 363 } |
| 363 | 364 |
| 364 void DeveloperPrivateEventRouter::OnProfilePrefChanged() { | 365 void DeveloperPrivateEventRouter::OnProfilePrefChanged() { |
| 365 scoped_ptr<base::ListValue> args(new base::ListValue()); | 366 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 366 args->Append(CreateProfileInfo(profile_)->ToValue()); | 367 args->Append(CreateProfileInfo(profile_)->ToValue()); |
| 367 scoped_ptr<Event> event( | 368 scoped_ptr<Event> event( |
| 368 new Event(events::DEVELOPER_PRIVATE_ON_PROFILE_STATE_CHANGED, | 369 new Event(events::DEVELOPER_PRIVATE_ON_PROFILE_STATE_CHANGED, |
| 369 developer::OnProfileStateChanged::kEventName, args.Pass())); | 370 developer::OnProfileStateChanged::kEventName, std::move(args))); |
| 370 event_router_->BroadcastEvent(event.Pass()); | 371 event_router_->BroadcastEvent(std::move(event)); |
| 371 } | 372 } |
| 372 | 373 |
| 373 void DeveloperPrivateEventRouter::BroadcastItemStateChanged( | 374 void DeveloperPrivateEventRouter::BroadcastItemStateChanged( |
| 374 developer::EventType event_type, | 375 developer::EventType event_type, |
| 375 const std::string& extension_id) { | 376 const std::string& extension_id) { |
| 376 scoped_ptr<ExtensionInfoGenerator> info_generator( | 377 scoped_ptr<ExtensionInfoGenerator> info_generator( |
| 377 new ExtensionInfoGenerator(profile_)); | 378 new ExtensionInfoGenerator(profile_)); |
| 378 ExtensionInfoGenerator* info_generator_weak = info_generator.get(); | 379 ExtensionInfoGenerator* info_generator_weak = info_generator.get(); |
| 379 info_generator_weak->CreateExtensionInfo( | 380 info_generator_weak->CreateExtensionInfo( |
| 380 extension_id, | 381 extension_id, |
| 381 base::Bind(&DeveloperPrivateEventRouter::BroadcastItemStateChangedHelper, | 382 base::Bind(&DeveloperPrivateEventRouter::BroadcastItemStateChangedHelper, |
| 382 weak_factory_.GetWeakPtr(), | 383 weak_factory_.GetWeakPtr(), event_type, extension_id, |
| 383 event_type, | 384 base::Passed(std::move(info_generator)))); |
| 384 extension_id, | |
| 385 base::Passed(info_generator.Pass()))); | |
| 386 } | 385 } |
| 387 | 386 |
| 388 void DeveloperPrivateEventRouter::BroadcastItemStateChangedHelper( | 387 void DeveloperPrivateEventRouter::BroadcastItemStateChangedHelper( |
| 389 developer::EventType event_type, | 388 developer::EventType event_type, |
| 390 const std::string& extension_id, | 389 const std::string& extension_id, |
| 391 scoped_ptr<ExtensionInfoGenerator> info_generator, | 390 scoped_ptr<ExtensionInfoGenerator> info_generator, |
| 392 const ExtensionInfoGenerator::ExtensionInfoList& infos) { | 391 const ExtensionInfoGenerator::ExtensionInfoList& infos) { |
| 393 DCHECK_LE(infos.size(), 1u); | 392 DCHECK_LE(infos.size(), 1u); |
| 394 | 393 |
| 395 developer::EventData event_data; | 394 developer::EventData event_data; |
| 396 event_data.event_type = event_type; | 395 event_data.event_type = event_type; |
| 397 event_data.item_id = extension_id; | 396 event_data.item_id = extension_id; |
| 398 scoped_ptr<base::DictionaryValue> dict = event_data.ToValue(); | 397 scoped_ptr<base::DictionaryValue> dict = event_data.ToValue(); |
| 399 | 398 |
| 400 if (!infos.empty()) { | 399 if (!infos.empty()) { |
| 401 // Hack: Ideally, we would use event_data.extension_info to set the | 400 // Hack: Ideally, we would use event_data.extension_info to set the |
| 402 // extension info, but since it's an optional field, it's implemented as a | 401 // extension info, but since it's an optional field, it's implemented as a |
| 403 // scoped ptr, and so ownership between that and the vector of linked ptrs | 402 // scoped ptr, and so ownership between that and the vector of linked ptrs |
| 404 // here is, well, messy. Easier to just set it like this. | 403 // here is, well, messy. Easier to just set it like this. |
| 405 dict->SetWithoutPathExpansion("extensionInfo", | 404 dict->SetWithoutPathExpansion("extensionInfo", |
| 406 infos[0]->ToValue().release()); | 405 infos[0]->ToValue().release()); |
| 407 } | 406 } |
| 408 | 407 |
| 409 scoped_ptr<base::ListValue> args(new base::ListValue()); | 408 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 410 args->Append(dict.release()); | 409 args->Append(dict.release()); |
| 411 scoped_ptr<Event> event( | 410 scoped_ptr<Event> event( |
| 412 new Event(events::DEVELOPER_PRIVATE_ON_ITEM_STATE_CHANGED, | 411 new Event(events::DEVELOPER_PRIVATE_ON_ITEM_STATE_CHANGED, |
| 413 developer::OnItemStateChanged::kEventName, args.Pass())); | 412 developer::OnItemStateChanged::kEventName, std::move(args))); |
| 414 event_router_->BroadcastEvent(event.Pass()); | 413 event_router_->BroadcastEvent(std::move(event)); |
| 415 } | 414 } |
| 416 | 415 |
| 417 void DeveloperPrivateAPI::SetLastUnpackedDirectory(const base::FilePath& path) { | 416 void DeveloperPrivateAPI::SetLastUnpackedDirectory(const base::FilePath& path) { |
| 418 last_unpacked_directory_ = path; | 417 last_unpacked_directory_ = path; |
| 419 } | 418 } |
| 420 | 419 |
| 421 void DeveloperPrivateAPI::RegisterNotifications() { | 420 void DeveloperPrivateAPI::RegisterNotifications() { |
| 422 EventRouter::Get(profile_)->RegisterObserver( | 421 EventRouter::Get(profile_)->RegisterObserver( |
| 423 this, developer::OnItemStateChanged::kEventName); | 422 this, developer::OnItemStateChanged::kEventName); |
| 424 } | 423 } |
| (...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1451 update.extension_id, update.command_name, *update.keybinding); | 1450 update.extension_id, update.command_name, *update.keybinding); |
| 1452 } | 1451 } |
| 1453 | 1452 |
| 1454 return RespondNow(NoArguments()); | 1453 return RespondNow(NoArguments()); |
| 1455 } | 1454 } |
| 1456 | 1455 |
| 1457 | 1456 |
| 1458 } // namespace api | 1457 } // namespace api |
| 1459 | 1458 |
| 1460 } // namespace extensions | 1459 } // namespace extensions |
| OLD | NEW |