| 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/management/management_api.h" | 5 #include "chrome/browser/extensions/api/management/management_api.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 IPC_BEGIN_MESSAGE_MAP(SafeManifestJSONParser, message) | 308 IPC_BEGIN_MESSAGE_MAP(SafeManifestJSONParser, message) |
| 309 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded, | 309 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded, |
| 310 OnJSONParseSucceeded) | 310 OnJSONParseSucceeded) |
| 311 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed, | 311 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed, |
| 312 OnJSONParseFailed) | 312 OnJSONParseFailed) |
| 313 IPC_MESSAGE_UNHANDLED(handled = false) | 313 IPC_MESSAGE_UNHANDLED(handled = false) |
| 314 IPC_END_MESSAGE_MAP() | 314 IPC_END_MESSAGE_MAP() |
| 315 return handled; | 315 return handled; |
| 316 } | 316 } |
| 317 | 317 |
| 318 void OnJSONParseSucceeded(const ListValue& wrapper) { | 318 void OnJSONParseSucceeded(const base::ListValue& wrapper) { |
| 319 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 319 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 320 const Value* value = NULL; | 320 const Value* value = NULL; |
| 321 CHECK(wrapper.Get(0, &value)); | 321 CHECK(wrapper.Get(0, &value)); |
| 322 if (value->IsType(Value::TYPE_DICTIONARY)) | 322 if (value->IsType(Value::TYPE_DICTIONARY)) |
| 323 parsed_manifest_.reset( | 323 parsed_manifest_.reset( |
| 324 static_cast<const DictionaryValue*>(value)->DeepCopy()); | 324 static_cast<const base::DictionaryValue*>(value)->DeepCopy()); |
| 325 else | 325 else |
| 326 error_ = keys::kManifestParseError; | 326 error_ = keys::kManifestParseError; |
| 327 | 327 |
| 328 BrowserThread::PostTask( | 328 BrowserThread::PostTask( |
| 329 BrowserThread::UI, | 329 BrowserThread::UI, |
| 330 FROM_HERE, | 330 FROM_HERE, |
| 331 base::Bind(&SafeManifestJSONParser::ReportResultFromUIThread, this)); | 331 base::Bind(&SafeManifestJSONParser::ReportResultFromUIThread, this)); |
| 332 } | 332 } |
| 333 | 333 |
| 334 void OnJSONParseFailed(const std::string& error) { | 334 void OnJSONParseFailed(const std::string& error) { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 351 private: | 351 private: |
| 352 virtual ~SafeManifestJSONParser() {} | 352 virtual ~SafeManifestJSONParser() {} |
| 353 | 353 |
| 354 // The client who we'll report results back to. | 354 // The client who we'll report results back to. |
| 355 ManagementGetPermissionWarningsByManifestFunction* client_; | 355 ManagementGetPermissionWarningsByManifestFunction* client_; |
| 356 | 356 |
| 357 // Data to parse. | 357 // Data to parse. |
| 358 std::string manifest_; | 358 std::string manifest_; |
| 359 | 359 |
| 360 // Results of parsing. | 360 // Results of parsing. |
| 361 scoped_ptr<DictionaryValue> parsed_manifest_; | 361 scoped_ptr<base::DictionaryValue> parsed_manifest_; |
| 362 | 362 |
| 363 std::string error_; | 363 std::string error_; |
| 364 }; | 364 }; |
| 365 | 365 |
| 366 } // namespace | 366 } // namespace |
| 367 | 367 |
| 368 bool ManagementGetPermissionWarningsByManifestFunction::RunImpl() { | 368 bool ManagementGetPermissionWarningsByManifestFunction::RunImpl() { |
| 369 scoped_ptr<management::GetPermissionWarningsByManifest::Params> params( | 369 scoped_ptr<management::GetPermissionWarningsByManifest::Params> params( |
| 370 management::GetPermissionWarningsByManifest::Params::Create(*args_)); | 370 management::GetPermissionWarningsByManifest::Params::Create(*args_)); |
| 371 EXTENSION_FUNCTION_VALIDATE(params.get()); | 371 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 372 | 372 |
| 373 scoped_refptr<SafeManifestJSONParser> parser = | 373 scoped_refptr<SafeManifestJSONParser> parser = |
| 374 new SafeManifestJSONParser(this, params->manifest_str); | 374 new SafeManifestJSONParser(this, params->manifest_str); |
| 375 parser->Start(); | 375 parser->Start(); |
| 376 | 376 |
| 377 // Matched with a Release() in OnParseSuccess/Failure(). | 377 // Matched with a Release() in OnParseSuccess/Failure(). |
| 378 AddRef(); | 378 AddRef(); |
| 379 | 379 |
| 380 // Response is sent async in OnParseSuccess/Failure(). | 380 // Response is sent async in OnParseSuccess/Failure(). |
| 381 return true; | 381 return true; |
| 382 } | 382 } |
| 383 | 383 |
| 384 void ManagementGetPermissionWarningsByManifestFunction::OnParseSuccess( | 384 void ManagementGetPermissionWarningsByManifestFunction::OnParseSuccess( |
| 385 DictionaryValue* parsed_manifest) { | 385 base::DictionaryValue* parsed_manifest) { |
| 386 CHECK(parsed_manifest); | 386 CHECK(parsed_manifest); |
| 387 | 387 |
| 388 scoped_refptr<Extension> extension = Extension::Create( | 388 scoped_refptr<Extension> extension = Extension::Create( |
| 389 base::FilePath(), Manifest::INVALID_LOCATION, *parsed_manifest, | 389 base::FilePath(), Manifest::INVALID_LOCATION, *parsed_manifest, |
| 390 Extension::NO_FLAGS, &error_); | 390 Extension::NO_FLAGS, &error_); |
| 391 if (!extension.get()) { | 391 if (!extension.get()) { |
| 392 OnParseFailure(keys::kExtensionCreateError); | 392 OnParseFailure(keys::kExtensionCreateError); |
| 393 return; | 393 return; |
| 394 } | 394 } |
| 395 | 395 |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 extension = | 669 extension = |
| 670 content::Details<const UnloadedExtensionInfo>(details)->extension; | 670 content::Details<const UnloadedExtensionInfo>(details)->extension; |
| 671 break; | 671 break; |
| 672 default: | 672 default: |
| 673 NOTREACHED(); | 673 NOTREACHED(); |
| 674 return; | 674 return; |
| 675 } | 675 } |
| 676 DCHECK(event_name); | 676 DCHECK(event_name); |
| 677 DCHECK(extension); | 677 DCHECK(extension); |
| 678 | 678 |
| 679 scoped_ptr<ListValue> args(new ListValue()); | 679 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 680 if (event_name == events::kOnExtensionUninstalled) { | 680 if (event_name == events::kOnExtensionUninstalled) { |
| 681 args->Append(Value::CreateStringValue(extension->id())); | 681 args->Append(Value::CreateStringValue(extension->id())); |
| 682 } else { | 682 } else { |
| 683 scoped_ptr<management::ExtensionInfo> info = CreateExtensionInfo( | 683 scoped_ptr<management::ExtensionInfo> info = CreateExtensionInfo( |
| 684 *extension, ExtensionSystem::Get(profile)); | 684 *extension, ExtensionSystem::Get(profile)); |
| 685 args->Append(info->ToValue().release()); | 685 args->Append(info->ToValue().release()); |
| 686 } | 686 } |
| 687 | 687 |
| 688 scoped_ptr<Event> event(new Event(event_name, args.Pass())); | 688 scoped_ptr<Event> event(new Event(event_name, args.Pass())); |
| 689 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); | 689 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 715 ProfileKeyedAPIFactory<ManagementAPI>* ManagementAPI::GetFactoryInstance() { | 715 ProfileKeyedAPIFactory<ManagementAPI>* ManagementAPI::GetFactoryInstance() { |
| 716 return &g_factory.Get(); | 716 return &g_factory.Get(); |
| 717 } | 717 } |
| 718 | 718 |
| 719 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 719 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
| 720 management_event_router_.reset(new ManagementEventRouter(profile_)); | 720 management_event_router_.reset(new ManagementEventRouter(profile_)); |
| 721 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); | 721 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); |
| 722 } | 722 } |
| 723 | 723 |
| 724 } // namespace extensions | 724 } // namespace extensions |
| OLD | NEW |