| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_mang
le.h" | 5 #include "chrome/browser/extensions/api/developer_private/developer_private_mang
le.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/common/extensions/api/developer_private.h" | 9 #include "chrome/common/extensions/api/developer_private.h" |
| 10 #include "extensions/browser/extension_error.h" | 10 #include "extensions/browser/extension_error.h" |
| 11 #include "extensions/common/constants.h" | 11 #include "extensions/common/constants.h" |
| 12 | 12 |
| 13 namespace extensions { | 13 namespace extensions { |
| 14 namespace developer_private_mangle { | 14 namespace developer_private_mangle { |
| 15 | 15 |
| 16 linked_ptr<api::developer_private::ItemInfo> MangleExtensionInfo( | 16 api::developer_private::ItemInfo MangleExtensionInfo( |
| 17 const api::developer_private::ExtensionInfo& info) { | 17 const api::developer_private::ExtensionInfo& info) { |
| 18 linked_ptr<api::developer_private::ItemInfo> result( | 18 api::developer_private::ItemInfo result; |
| 19 new api::developer_private::ItemInfo()); | 19 result.id = info.id; |
| 20 result->id = info.id; | 20 result.name = info.name; |
| 21 result->name = info.name; | 21 result.version = info.version; |
| 22 result->version = info.version; | 22 result.description = info.description; |
| 23 result->description = info.description; | 23 result.may_disable = info.user_may_modify; |
| 24 result->may_disable = info.user_may_modify; | 24 result.enabled = |
| 25 result->enabled = | |
| 26 info.state == api::developer_private::EXTENSION_STATE_ENABLED; | 25 info.state == api::developer_private::EXTENSION_STATE_ENABLED; |
| 27 switch (info.type) { | 26 switch (info.type) { |
| 28 case api::developer_private::EXTENSION_TYPE_HOSTED_APP: | 27 case api::developer_private::EXTENSION_TYPE_HOSTED_APP: |
| 29 result->type = api::developer_private::ITEM_TYPE_HOSTED_APP; | 28 result.type = api::developer_private::ITEM_TYPE_HOSTED_APP; |
| 30 result->is_app = true; | 29 result.is_app = true; |
| 31 break; | 30 break; |
| 32 case api::developer_private::EXTENSION_TYPE_PLATFORM_APP: | 31 case api::developer_private::EXTENSION_TYPE_PLATFORM_APP: |
| 33 result->type = api::developer_private::ITEM_TYPE_PACKAGED_APP; | 32 result.type = api::developer_private::ITEM_TYPE_PACKAGED_APP; |
| 34 result->is_app = true; | 33 result.is_app = true; |
| 35 break; | 34 break; |
| 36 case api::developer_private::EXTENSION_TYPE_LEGACY_PACKAGED_APP: | 35 case api::developer_private::EXTENSION_TYPE_LEGACY_PACKAGED_APP: |
| 37 result->type = api::developer_private::ITEM_TYPE_LEGACY_PACKAGED_APP; | 36 result.type = api::developer_private::ITEM_TYPE_LEGACY_PACKAGED_APP; |
| 38 result->is_app = true; | 37 result.is_app = true; |
| 39 break; | 38 break; |
| 40 case api::developer_private::EXTENSION_TYPE_EXTENSION: | 39 case api::developer_private::EXTENSION_TYPE_EXTENSION: |
| 41 result->type = api::developer_private::ITEM_TYPE_EXTENSION; | 40 result.type = api::developer_private::ITEM_TYPE_EXTENSION; |
| 42 result->is_app = false; | 41 result.is_app = false; |
| 43 break; | 42 break; |
| 44 case api::developer_private::EXTENSION_TYPE_THEME: | 43 case api::developer_private::EXTENSION_TYPE_THEME: |
| 45 result->type = api::developer_private::ITEM_TYPE_THEME; | 44 result.type = api::developer_private::ITEM_TYPE_THEME; |
| 46 result->is_app = false; | 45 result.is_app = false; |
| 47 break; | 46 break; |
| 48 case api::developer_private::EXTENSION_TYPE_SHARED_MODULE: | 47 case api::developer_private::EXTENSION_TYPE_SHARED_MODULE: |
| 49 // Old api doesn't account for this. | 48 // Old api doesn't account for this. |
| 50 break; | 49 break; |
| 51 default: | 50 default: |
| 52 NOTREACHED(); | 51 NOTREACHED(); |
| 53 } | 52 } |
| 54 result->allow_file_access = info.file_access.is_active; | 53 result.allow_file_access = info.file_access.is_active; |
| 55 result->wants_file_access = info.file_access.is_enabled; | 54 result.wants_file_access = info.file_access.is_enabled; |
| 56 | 55 |
| 57 result->icon_url = info.icon_url; | 56 result.icon_url = info.icon_url; |
| 58 | 57 |
| 59 result->incognito_enabled = info.incognito_access.is_active; | 58 result.incognito_enabled = info.incognito_access.is_active; |
| 60 result->allow_incognito = info.incognito_access.is_enabled; | 59 result.allow_incognito = info.incognito_access.is_enabled; |
| 61 | 60 |
| 62 result->is_unpacked = | 61 result.is_unpacked = |
| 63 info.location == api::developer_private::LOCATION_UNPACKED; | 62 info.location == api::developer_private::LOCATION_UNPACKED; |
| 64 result->allow_reload = result->is_unpacked; | 63 result.allow_reload = result.is_unpacked; |
| 65 result->terminated = | 64 result.terminated = |
| 66 info.state == api::developer_private::EXTENSION_STATE_TERMINATED; | 65 info.state == api::developer_private::EXTENSION_STATE_TERMINATED; |
| 67 | 66 |
| 68 if (info.path) | 67 if (info.path) |
| 69 result->path.reset(new std::string(*info.path)); | 68 result.path.reset(new std::string(*info.path)); |
| 70 if (info.options_page) | 69 if (info.options_page) |
| 71 result->options_url.reset(new std::string(info.options_page->url)); | 70 result.options_url.reset(new std::string(info.options_page->url)); |
| 72 if (info.launch_url) | 71 if (info.launch_url) |
| 73 result->app_launch_url.reset(new std::string(*info.launch_url)); | 72 result.app_launch_url.reset(new std::string(*info.launch_url)); |
| 74 if (!info.home_page.url.empty()) | 73 if (!info.home_page.url.empty()) |
| 75 result->homepage_url.reset(new std::string(info.home_page.url)); | 74 result.homepage_url.reset(new std::string(info.home_page.url)); |
| 76 result->update_url.reset(new std::string(info.update_url)); | 75 result.update_url.reset(new std::string(info.update_url)); |
| 77 for (const std::string& str_warning : info.install_warnings) { | 76 for (const std::string& str_warning : info.install_warnings) { |
| 78 scoped_ptr<api::developer_private::InstallWarning> warning( | 77 api::developer_private::InstallWarning warning; |
| 79 new api::developer_private::InstallWarning()); | 78 warning.message = str_warning; |
| 80 warning->message = str_warning; | 79 result.install_warnings.push_back(std::move(warning)); |
| 81 result->install_warnings.push_back(make_linked_ptr(warning.release())); | |
| 82 } | 80 } |
| 83 for (const linked_ptr<api::developer_private::ManifestError>& error : | 81 for (const api::developer_private::ManifestError& error : |
| 84 info.manifest_errors) { | 82 info.manifest_errors) { |
| 85 CHECK(error.get()); | 83 scoped_ptr<base::DictionaryValue> value = error.ToValue(); |
| 86 scoped_ptr<base::DictionaryValue> value = error->ToValue(); | |
| 87 value->SetInteger("type", static_cast<int>(ExtensionError::MANIFEST_ERROR)); | 84 value->SetInteger("type", static_cast<int>(ExtensionError::MANIFEST_ERROR)); |
| 88 value->SetInteger("level", static_cast<int>(logging::LOG_WARNING)); | 85 value->SetInteger("level", static_cast<int>(logging::LOG_WARNING)); |
| 89 result->manifest_errors.push_back(make_linked_ptr(value.release())); | 86 result.manifest_errors.push_back(make_linked_ptr(value.release())); |
| 90 } | 87 } |
| 91 for (const linked_ptr<api::developer_private::RuntimeError>& error : | 88 for (const api::developer_private::RuntimeError& error : |
| 92 info.runtime_errors) { | 89 info.runtime_errors) { |
| 93 CHECK(error.get()); | 90 scoped_ptr<base::DictionaryValue> value = error.ToValue(); |
| 94 scoped_ptr<base::DictionaryValue> value = error->ToValue(); | |
| 95 value->SetInteger("type", static_cast<int>(ExtensionError::RUNTIME_ERROR)); | 91 value->SetInteger("type", static_cast<int>(ExtensionError::RUNTIME_ERROR)); |
| 96 logging::LogSeverity severity = logging::LOG_INFO; | 92 logging::LogSeverity severity = logging::LOG_INFO; |
| 97 if (error->severity == api::developer_private::ERROR_LEVEL_WARN) | 93 if (error.severity == api::developer_private::ERROR_LEVEL_WARN) |
| 98 severity = logging::LOG_WARNING; | 94 severity = logging::LOG_WARNING; |
| 99 else if (error->severity == api::developer_private::ERROR_LEVEL_ERROR) | 95 else if (error.severity == api::developer_private::ERROR_LEVEL_ERROR) |
| 100 severity = logging::LOG_ERROR; | 96 severity = logging::LOG_ERROR; |
| 101 value->SetInteger("level", static_cast<int>(severity)); | 97 value->SetInteger("level", static_cast<int>(severity)); |
| 102 result->runtime_errors.push_back(make_linked_ptr(value.release())); | 98 result.runtime_errors.push_back(make_linked_ptr(value.release())); |
| 103 } | 99 } |
| 104 result->offline_enabled = info.offline_enabled; | 100 result.offline_enabled = info.offline_enabled; |
| 105 for (const linked_ptr<api::developer_private::ExtensionView>& view : | 101 for (const api::developer_private::ExtensionView& view : info.views) { |
| 106 info.views) { | 102 api::developer_private::ItemInspectView view_copy; |
| 107 linked_ptr<api::developer_private::ItemInspectView> view_copy( | 103 GURL url(view.url); |
| 108 new api::developer_private::ItemInspectView()); | |
| 109 GURL url(view->url); | |
| 110 if (url.scheme() == kExtensionScheme) { | 104 if (url.scheme() == kExtensionScheme) { |
| 111 // No leading slash. | 105 // No leading slash. |
| 112 view_copy->path = url.path().substr(1); | 106 view_copy.path = url.path().substr(1); |
| 113 } else { | 107 } else { |
| 114 // For live pages, use the full URL. | 108 // For live pages, use the full URL. |
| 115 view_copy->path = url.spec(); | 109 view_copy.path = url.spec(); |
| 116 } | 110 } |
| 117 view_copy->render_process_id = view->render_process_id; | 111 view_copy.render_process_id = view.render_process_id; |
| 118 view_copy->render_view_id = view->render_view_id; | 112 view_copy.render_view_id = view.render_view_id; |
| 119 view_copy->incognito = view->incognito; | 113 view_copy.incognito = view.incognito; |
| 120 view_copy->generated_background_page = | 114 view_copy.generated_background_page = |
| 121 view_copy->path == kGeneratedBackgroundPageFilename; | 115 view_copy.path == kGeneratedBackgroundPageFilename; |
| 122 result->views.push_back(view_copy); | 116 result.views.push_back(std::move(view_copy)); |
| 123 } | 117 } |
| 124 | 118 |
| 125 return result; | 119 return result; |
| 126 } | 120 } |
| 127 | 121 |
| 128 } // namespace developer_private_mangle | 122 } // namespace developer_private_mangle |
| 129 } // namespace extensions | 123 } // namespace extensions |
| OLD | NEW |