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 |