| 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 "extensions/browser/api/management/management_api.h" | 5 #include "extensions/browser/api/management/management_api.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 using content::BrowserThread; | 46 using content::BrowserThread; |
| 47 | 47 |
| 48 namespace keys = extension_management_api_constants; | 48 namespace keys = extension_management_api_constants; |
| 49 | 49 |
| 50 namespace extensions { | 50 namespace extensions { |
| 51 | 51 |
| 52 namespace management = api::management; | 52 namespace management = api::management; |
| 53 | 53 |
| 54 namespace { | 54 namespace { |
| 55 | 55 |
| 56 typedef std::vector<linked_ptr<management::ExtensionInfo>> ExtensionInfoList; | 56 typedef std::vector<management::ExtensionInfo> ExtensionInfoList; |
| 57 typedef std::vector<linked_ptr<management::IconInfo>> IconInfoList; | 57 typedef std::vector<management::IconInfo> IconInfoList; |
| 58 | 58 |
| 59 enum AutoConfirmForTest { DO_NOT_SKIP = 0, PROCEED, ABORT }; | 59 enum AutoConfirmForTest { DO_NOT_SKIP = 0, PROCEED, ABORT }; |
| 60 | 60 |
| 61 AutoConfirmForTest auto_confirm_for_test = DO_NOT_SKIP; | 61 AutoConfirmForTest auto_confirm_for_test = DO_NOT_SKIP; |
| 62 | 62 |
| 63 std::vector<std::string> CreateWarningsList(const Extension* extension) { | 63 std::vector<std::string> CreateWarningsList(const Extension* extension) { |
| 64 std::vector<std::string> warnings_list; | 64 std::vector<std::string> warnings_list; |
| 65 for (const PermissionMessage& msg : | 65 for (const PermissionMessage& msg : |
| 66 extension->permissions_data()->GetPermissionMessages()) { | 66 extension->permissions_data()->GetPermissionMessages()) { |
| 67 warnings_list.push_back(base::UTF16ToUTF8(msg.message())); | 67 warnings_list.push_back(base::UTF16ToUTF8(msg.message())); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 85 if (delegate->CanHostedAppsOpenInWindows()) | 85 if (delegate->CanHostedAppsOpenInWindows()) |
| 86 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_WINDOW); | 86 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_WINDOW); |
| 87 | 87 |
| 88 if (!delegate->IsNewBookmarkAppsEnabled()) { | 88 if (!delegate->IsNewBookmarkAppsEnabled()) { |
| 89 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB); | 89 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB); |
| 90 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_FULL_SCREEN); | 90 launch_type_list.push_back(management::LAUNCH_TYPE_OPEN_FULL_SCREEN); |
| 91 } | 91 } |
| 92 return launch_type_list; | 92 return launch_type_list; |
| 93 } | 93 } |
| 94 | 94 |
| 95 scoped_ptr<management::ExtensionInfo> CreateExtensionInfo( | 95 management::ExtensionInfo CreateExtensionInfo( |
| 96 const Extension& extension, | 96 const Extension& extension, |
| 97 content::BrowserContext* context) { | 97 content::BrowserContext* context) { |
| 98 ExtensionSystem* system = ExtensionSystem::Get(context); | 98 ExtensionSystem* system = ExtensionSystem::Get(context); |
| 99 ExtensionRegistry* registry = ExtensionRegistry::Get(context); | 99 ExtensionRegistry* registry = ExtensionRegistry::Get(context); |
| 100 const ManagementAPIDelegate* delegate = | 100 const ManagementAPIDelegate* delegate = |
| 101 ManagementAPI::GetFactoryInstance()->Get(context)->GetDelegate(); | 101 ManagementAPI::GetFactoryInstance()->Get(context)->GetDelegate(); |
| 102 scoped_ptr<management::ExtensionInfo> info(new management::ExtensionInfo()); | 102 management::ExtensionInfo info; |
| 103 | 103 |
| 104 info->id = extension.id(); | 104 info.id = extension.id(); |
| 105 info->name = extension.name(); | 105 info.name = extension.name(); |
| 106 info->short_name = extension.short_name(); | 106 info.short_name = extension.short_name(); |
| 107 info->enabled = registry->enabled_extensions().Contains(info->id); | 107 info.enabled = registry->enabled_extensions().Contains(info.id); |
| 108 info->offline_enabled = OfflineEnabledInfo::IsOfflineEnabled(&extension); | 108 info.offline_enabled = OfflineEnabledInfo::IsOfflineEnabled(&extension); |
| 109 info->version = extension.VersionString(); | 109 info.version = extension.VersionString(); |
| 110 if (!extension.version_name().empty()) | 110 if (!extension.version_name().empty()) |
| 111 info->version_name.reset(new std::string(extension.version_name())); | 111 info.version_name.reset(new std::string(extension.version_name())); |
| 112 info->description = extension.description(); | 112 info.description = extension.description(); |
| 113 info->options_url = OptionsPageInfo::GetOptionsPage(&extension).spec(); | 113 info.options_url = OptionsPageInfo::GetOptionsPage(&extension).spec(); |
| 114 info->homepage_url.reset( | 114 info.homepage_url.reset( |
| 115 new std::string(ManifestURL::GetHomepageURL(&extension).spec())); | 115 new std::string(ManifestURL::GetHomepageURL(&extension).spec())); |
| 116 info->may_disable = | 116 info.may_disable = |
| 117 system->management_policy()->UserMayModifySettings(&extension, NULL); | 117 system->management_policy()->UserMayModifySettings(&extension, NULL); |
| 118 info->is_app = extension.is_app(); | 118 info.is_app = extension.is_app(); |
| 119 if (info->is_app) { | 119 if (info.is_app) { |
| 120 if (extension.is_legacy_packaged_app()) | 120 if (extension.is_legacy_packaged_app()) |
| 121 info->type = management::EXTENSION_TYPE_LEGACY_PACKAGED_APP; | 121 info.type = management::EXTENSION_TYPE_LEGACY_PACKAGED_APP; |
| 122 else if (extension.is_hosted_app()) | 122 else if (extension.is_hosted_app()) |
| 123 info->type = management::EXTENSION_TYPE_HOSTED_APP; | 123 info.type = management::EXTENSION_TYPE_HOSTED_APP; |
| 124 else | 124 else |
| 125 info->type = management::EXTENSION_TYPE_PACKAGED_APP; | 125 info.type = management::EXTENSION_TYPE_PACKAGED_APP; |
| 126 } else if (extension.is_theme()) { | 126 } else if (extension.is_theme()) { |
| 127 info->type = management::EXTENSION_TYPE_THEME; | 127 info.type = management::EXTENSION_TYPE_THEME; |
| 128 } else { | 128 } else { |
| 129 info->type = management::EXTENSION_TYPE_EXTENSION; | 129 info.type = management::EXTENSION_TYPE_EXTENSION; |
| 130 } | 130 } |
| 131 | 131 |
| 132 if (info->enabled) { | 132 if (info.enabled) { |
| 133 info->disabled_reason = management::EXTENSION_DISABLED_REASON_NONE; | 133 info.disabled_reason = management::EXTENSION_DISABLED_REASON_NONE; |
| 134 } else { | 134 } else { |
| 135 ExtensionPrefs* prefs = ExtensionPrefs::Get(context); | 135 ExtensionPrefs* prefs = ExtensionPrefs::Get(context); |
| 136 if (prefs->DidExtensionEscalatePermissions(extension.id())) { | 136 if (prefs->DidExtensionEscalatePermissions(extension.id())) { |
| 137 info->disabled_reason = | 137 info.disabled_reason = |
| 138 management::EXTENSION_DISABLED_REASON_PERMISSIONS_INCREASE; | 138 management::EXTENSION_DISABLED_REASON_PERMISSIONS_INCREASE; |
| 139 } else { | 139 } else { |
| 140 info->disabled_reason = | 140 info.disabled_reason = management::EXTENSION_DISABLED_REASON_UNKNOWN; |
| 141 management::EXTENSION_DISABLED_REASON_UNKNOWN; | |
| 142 } | 141 } |
| 143 } | 142 } |
| 144 | 143 |
| 145 if (!ManifestURL::GetUpdateURL(&extension).is_empty()) { | 144 if (!ManifestURL::GetUpdateURL(&extension).is_empty()) { |
| 146 info->update_url.reset( | 145 info.update_url.reset( |
| 147 new std::string(ManifestURL::GetUpdateURL(&extension).spec())); | 146 new std::string(ManifestURL::GetUpdateURL(&extension).spec())); |
| 148 } | 147 } |
| 149 | 148 |
| 150 if (extension.is_app()) { | 149 if (extension.is_app()) { |
| 151 info->app_launch_url.reset( | 150 info.app_launch_url.reset( |
| 152 new std::string(delegate->GetFullLaunchURL(&extension).spec())); | 151 new std::string(delegate->GetFullLaunchURL(&extension).spec())); |
| 153 } | 152 } |
| 154 | 153 |
| 155 const ExtensionIconSet::IconMap& icons = | 154 const ExtensionIconSet::IconMap& icons = |
| 156 IconsInfo::GetIcons(&extension).map(); | 155 IconsInfo::GetIcons(&extension).map(); |
| 157 if (!icons.empty()) { | 156 if (!icons.empty()) { |
| 158 info->icons.reset(new IconInfoList()); | 157 info.icons.reset(new IconInfoList()); |
| 159 ExtensionIconSet::IconMap::const_iterator icon_iter; | 158 ExtensionIconSet::IconMap::const_iterator icon_iter; |
| 160 for (icon_iter = icons.begin(); icon_iter != icons.end(); ++icon_iter) { | 159 for (icon_iter = icons.begin(); icon_iter != icons.end(); ++icon_iter) { |
| 161 management::IconInfo* icon_info = new management::IconInfo(); | 160 management::IconInfo icon_info; |
| 162 icon_info->size = icon_iter->first; | 161 icon_info.size = icon_iter->first; |
| 163 GURL url = | 162 GURL url = |
| 164 delegate->GetIconURL(&extension, icon_info->size, | 163 delegate->GetIconURL(&extension, icon_info.size, |
| 165 ExtensionIconSet::MATCH_EXACTLY, false, nullptr); | 164 ExtensionIconSet::MATCH_EXACTLY, false, nullptr); |
| 166 icon_info->url = url.spec(); | 165 icon_info.url = url.spec(); |
| 167 info->icons->push_back(make_linked_ptr<management::IconInfo>(icon_info)); | 166 info.icons->push_back(std::move(icon_info)); |
| 168 } | 167 } |
| 169 } | 168 } |
| 170 | 169 |
| 171 const std::set<std::string> perms = | 170 const std::set<std::string> perms = |
| 172 extension.permissions_data()->active_permissions().GetAPIsAsStrings(); | 171 extension.permissions_data()->active_permissions().GetAPIsAsStrings(); |
| 173 if (!perms.empty()) { | 172 if (!perms.empty()) { |
| 174 std::set<std::string>::const_iterator perms_iter; | 173 std::set<std::string>::const_iterator perms_iter; |
| 175 for (perms_iter = perms.begin(); perms_iter != perms.end(); ++perms_iter) | 174 for (perms_iter = perms.begin(); perms_iter != perms.end(); ++perms_iter) |
| 176 info->permissions.push_back(*perms_iter); | 175 info.permissions.push_back(*perms_iter); |
| 177 } | 176 } |
| 178 | 177 |
| 179 if (!extension.is_hosted_app()) { | 178 if (!extension.is_hosted_app()) { |
| 180 // Skip host permissions for hosted apps. | 179 // Skip host permissions for hosted apps. |
| 181 const URLPatternSet host_perms = | 180 const URLPatternSet host_perms = |
| 182 extension.permissions_data()->active_permissions().explicit_hosts(); | 181 extension.permissions_data()->active_permissions().explicit_hosts(); |
| 183 if (!host_perms.is_empty()) { | 182 if (!host_perms.is_empty()) { |
| 184 for (URLPatternSet::const_iterator iter = host_perms.begin(); | 183 for (URLPatternSet::const_iterator iter = host_perms.begin(); |
| 185 iter != host_perms.end(); ++iter) { | 184 iter != host_perms.end(); ++iter) { |
| 186 info->host_permissions.push_back(iter->GetAsString()); | 185 info.host_permissions.push_back(iter->GetAsString()); |
| 187 } | 186 } |
| 188 } | 187 } |
| 189 } | 188 } |
| 190 | 189 |
| 191 switch (extension.location()) { | 190 switch (extension.location()) { |
| 192 case Manifest::INTERNAL: | 191 case Manifest::INTERNAL: |
| 193 info->install_type = management::EXTENSION_INSTALL_TYPE_NORMAL; | 192 info.install_type = management::EXTENSION_INSTALL_TYPE_NORMAL; |
| 194 break; | 193 break; |
| 195 case Manifest::UNPACKED: | 194 case Manifest::UNPACKED: |
| 196 case Manifest::COMMAND_LINE: | 195 case Manifest::COMMAND_LINE: |
| 197 info->install_type = management::EXTENSION_INSTALL_TYPE_DEVELOPMENT; | 196 info.install_type = management::EXTENSION_INSTALL_TYPE_DEVELOPMENT; |
| 198 break; | 197 break; |
| 199 case Manifest::EXTERNAL_PREF: | 198 case Manifest::EXTERNAL_PREF: |
| 200 case Manifest::EXTERNAL_REGISTRY: | 199 case Manifest::EXTERNAL_REGISTRY: |
| 201 case Manifest::EXTERNAL_PREF_DOWNLOAD: | 200 case Manifest::EXTERNAL_PREF_DOWNLOAD: |
| 202 info->install_type = management::EXTENSION_INSTALL_TYPE_SIDELOAD; | 201 info.install_type = management::EXTENSION_INSTALL_TYPE_SIDELOAD; |
| 203 break; | 202 break; |
| 204 case Manifest::EXTERNAL_POLICY: | 203 case Manifest::EXTERNAL_POLICY: |
| 205 case Manifest::EXTERNAL_POLICY_DOWNLOAD: | 204 case Manifest::EXTERNAL_POLICY_DOWNLOAD: |
| 206 info->install_type = management::EXTENSION_INSTALL_TYPE_ADMIN; | 205 info.install_type = management::EXTENSION_INSTALL_TYPE_ADMIN; |
| 207 break; | 206 break; |
| 208 case Manifest::NUM_LOCATIONS: | 207 case Manifest::NUM_LOCATIONS: |
| 209 NOTREACHED(); | 208 NOTREACHED(); |
| 210 case Manifest::INVALID_LOCATION: | 209 case Manifest::INVALID_LOCATION: |
| 211 case Manifest::COMPONENT: | 210 case Manifest::COMPONENT: |
| 212 case Manifest::EXTERNAL_COMPONENT: | 211 case Manifest::EXTERNAL_COMPONENT: |
| 213 info->install_type = management::EXTENSION_INSTALL_TYPE_OTHER; | 212 info.install_type = management::EXTENSION_INSTALL_TYPE_OTHER; |
| 214 break; | 213 break; |
| 215 } | 214 } |
| 216 | 215 |
| 217 info->launch_type = management::LAUNCH_TYPE_NONE; | 216 info.launch_type = management::LAUNCH_TYPE_NONE; |
| 218 if (extension.is_app()) { | 217 if (extension.is_app()) { |
| 219 LaunchType launch_type; | 218 LaunchType launch_type; |
| 220 if (extension.is_platform_app()) { | 219 if (extension.is_platform_app()) { |
| 221 launch_type = LAUNCH_TYPE_WINDOW; | 220 launch_type = LAUNCH_TYPE_WINDOW; |
| 222 } else { | 221 } else { |
| 223 launch_type = | 222 launch_type = |
| 224 delegate->GetLaunchType(ExtensionPrefs::Get(context), &extension); | 223 delegate->GetLaunchType(ExtensionPrefs::Get(context), &extension); |
| 225 } | 224 } |
| 226 | 225 |
| 227 switch (launch_type) { | 226 switch (launch_type) { |
| 228 case LAUNCH_TYPE_PINNED: | 227 case LAUNCH_TYPE_PINNED: |
| 229 info->launch_type = management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB; | 228 info.launch_type = management::LAUNCH_TYPE_OPEN_AS_PINNED_TAB; |
| 230 break; | 229 break; |
| 231 case LAUNCH_TYPE_REGULAR: | 230 case LAUNCH_TYPE_REGULAR: |
| 232 info->launch_type = management::LAUNCH_TYPE_OPEN_AS_REGULAR_TAB; | 231 info.launch_type = management::LAUNCH_TYPE_OPEN_AS_REGULAR_TAB; |
| 233 break; | 232 break; |
| 234 case LAUNCH_TYPE_FULLSCREEN: | 233 case LAUNCH_TYPE_FULLSCREEN: |
| 235 info->launch_type = management::LAUNCH_TYPE_OPEN_FULL_SCREEN; | 234 info.launch_type = management::LAUNCH_TYPE_OPEN_FULL_SCREEN; |
| 236 break; | 235 break; |
| 237 case LAUNCH_TYPE_WINDOW: | 236 case LAUNCH_TYPE_WINDOW: |
| 238 info->launch_type = management::LAUNCH_TYPE_OPEN_AS_WINDOW; | 237 info.launch_type = management::LAUNCH_TYPE_OPEN_AS_WINDOW; |
| 239 break; | 238 break; |
| 240 case LAUNCH_TYPE_INVALID: | 239 case LAUNCH_TYPE_INVALID: |
| 241 case NUM_LAUNCH_TYPES: | 240 case NUM_LAUNCH_TYPES: |
| 242 NOTREACHED(); | 241 NOTREACHED(); |
| 243 } | 242 } |
| 244 | 243 |
| 245 info->available_launch_types.reset(new std::vector<management::LaunchType>( | 244 info.available_launch_types.reset(new std::vector<management::LaunchType>( |
| 246 GetAvailableLaunchTypes(extension, delegate))); | 245 GetAvailableLaunchTypes(extension, delegate))); |
| 247 } | 246 } |
| 248 | 247 |
| 249 return info; | 248 return info; |
| 250 } | 249 } |
| 251 | 250 |
| 252 void AddExtensionInfo(const ExtensionSet& extensions, | 251 void AddExtensionInfo(const ExtensionSet& extensions, |
| 253 ExtensionInfoList* extension_list, | 252 ExtensionInfoList* extension_list, |
| 254 content::BrowserContext* context) { | 253 content::BrowserContext* context) { |
| 255 for (ExtensionSet::const_iterator iter = extensions.begin(); | 254 for (ExtensionSet::const_iterator iter = extensions.begin(); |
| 256 iter != extensions.end(); ++iter) { | 255 iter != extensions.end(); ++iter) { |
| 257 const Extension& extension = *iter->get(); | 256 const Extension& extension = *iter->get(); |
| 258 | 257 |
| 259 if (extension.ShouldNotBeVisible()) | 258 if (extension.ShouldNotBeVisible()) |
| 260 continue; // Skip built-in extensions/apps. | 259 continue; // Skip built-in extensions/apps. |
| 261 | 260 |
| 262 extension_list->push_back(make_linked_ptr<management::ExtensionInfo>( | 261 extension_list->push_back(CreateExtensionInfo(extension, context)); |
| 263 CreateExtensionInfo(extension, context).release())); | |
| 264 } | 262 } |
| 265 } | 263 } |
| 266 | 264 |
| 267 } // namespace | 265 } // namespace |
| 268 | 266 |
| 269 bool ManagementGetAllFunction::RunSync() { | 267 bool ManagementGetAllFunction::RunSync() { |
| 270 ExtensionInfoList extensions; | 268 ExtensionInfoList extensions; |
| 271 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 269 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
| 272 | 270 |
| 273 AddExtensionInfo(registry->enabled_extensions(), &extensions, | 271 AddExtensionInfo(registry->enabled_extensions(), &extensions, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 288 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); | 286 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
| 289 | 287 |
| 290 const Extension* extension = | 288 const Extension* extension = |
| 291 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); | 289 registry->GetExtensionById(params->id, ExtensionRegistry::EVERYTHING); |
| 292 if (!extension) { | 290 if (!extension) { |
| 293 error_ = | 291 error_ = |
| 294 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); | 292 ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id); |
| 295 return false; | 293 return false; |
| 296 } | 294 } |
| 297 | 295 |
| 298 scoped_ptr<management::ExtensionInfo> info = | 296 results_ = management::Get::Results::Create( |
| 299 CreateExtensionInfo(*extension, browser_context()); | 297 CreateExtensionInfo(*extension, browser_context())); |
| 300 results_ = management::Get::Results::Create(*info); | |
| 301 | 298 |
| 302 return true; | 299 return true; |
| 303 } | 300 } |
| 304 | 301 |
| 305 bool ManagementGetSelfFunction::RunSync() { | 302 bool ManagementGetSelfFunction::RunSync() { |
| 306 scoped_ptr<management::ExtensionInfo> info = | 303 results_ = management::Get::Results::Create( |
| 307 CreateExtensionInfo(*extension_, browser_context()); | 304 CreateExtensionInfo(*extension_, browser_context())); |
| 308 results_ = management::Get::Results::Create(*info); | |
| 309 | 305 |
| 310 return true; | 306 return true; |
| 311 } | 307 } |
| 312 | 308 |
| 313 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { | 309 bool ManagementGetPermissionWarningsByIdFunction::RunSync() { |
| 314 scoped_ptr<management::GetPermissionWarningsById::Params> params( | 310 scoped_ptr<management::GetPermissionWarningsById::Params> params( |
| 315 management::GetPermissionWarningsById::Params::Create(*args_)); | 311 management::GetPermissionWarningsById::Params::Create(*args_)); |
| 316 EXTENSION_FUNCTION_VALIDATE(params.get()); | 312 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 317 | 313 |
| 318 const Extension* extension = | 314 const Extension* extension = |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 ManagementGenerateAppForLinkFunction::ManagementGenerateAppForLinkFunction() { | 762 ManagementGenerateAppForLinkFunction::ManagementGenerateAppForLinkFunction() { |
| 767 } | 763 } |
| 768 | 764 |
| 769 ManagementGenerateAppForLinkFunction::~ManagementGenerateAppForLinkFunction() { | 765 ManagementGenerateAppForLinkFunction::~ManagementGenerateAppForLinkFunction() { |
| 770 } | 766 } |
| 771 | 767 |
| 772 void ManagementGenerateAppForLinkFunction::FinishCreateBookmarkApp( | 768 void ManagementGenerateAppForLinkFunction::FinishCreateBookmarkApp( |
| 773 const Extension* extension, | 769 const Extension* extension, |
| 774 const WebApplicationInfo& web_app_info) { | 770 const WebApplicationInfo& web_app_info) { |
| 775 if (extension) { | 771 if (extension) { |
| 776 scoped_ptr<management::ExtensionInfo> info = | 772 results_ = management::GenerateAppForLink::Results::Create( |
| 777 CreateExtensionInfo(*extension, browser_context()); | 773 CreateExtensionInfo(*extension, browser_context())); |
| 778 results_ = management::GenerateAppForLink::Results::Create(*info); | |
| 779 | 774 |
| 780 SendResponse(true); | 775 SendResponse(true); |
| 781 Release(); | 776 Release(); |
| 782 } else { | 777 } else { |
| 783 error_ = keys::kGenerateAppForLinkInstallError; | 778 error_ = keys::kGenerateAppForLinkInstallError; |
| 784 SendResponse(false); | 779 SendResponse(false); |
| 785 Release(); | 780 Release(); |
| 786 } | 781 } |
| 787 } | 782 } |
| 788 | 783 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 864 void ManagementEventRouter::BroadcastEvent( | 859 void ManagementEventRouter::BroadcastEvent( |
| 865 const Extension* extension, | 860 const Extension* extension, |
| 866 events::HistogramValue histogram_value, | 861 events::HistogramValue histogram_value, |
| 867 const char* event_name) { | 862 const char* event_name) { |
| 868 if (extension->ShouldNotBeVisible()) | 863 if (extension->ShouldNotBeVisible()) |
| 869 return; // Don't dispatch events for built-in extenions. | 864 return; // Don't dispatch events for built-in extenions. |
| 870 scoped_ptr<base::ListValue> args(new base::ListValue()); | 865 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 871 if (event_name == management::OnUninstalled::kEventName) { | 866 if (event_name == management::OnUninstalled::kEventName) { |
| 872 args->Append(new base::StringValue(extension->id())); | 867 args->Append(new base::StringValue(extension->id())); |
| 873 } else { | 868 } else { |
| 874 scoped_ptr<management::ExtensionInfo> info = | 869 args->Append(CreateExtensionInfo(*extension, browser_context_).ToValue()); |
| 875 CreateExtensionInfo(*extension, browser_context_); | |
| 876 args->Append(info->ToValue().release()); | |
| 877 } | 870 } |
| 878 | 871 |
| 879 EventRouter::Get(browser_context_) | 872 EventRouter::Get(browser_context_) |
| 880 ->BroadcastEvent(scoped_ptr<Event>( | 873 ->BroadcastEvent(scoped_ptr<Event>( |
| 881 new Event(histogram_value, event_name, std::move(args)))); | 874 new Event(histogram_value, event_name, std::move(args)))); |
| 882 } | 875 } |
| 883 | 876 |
| 884 ManagementAPI::ManagementAPI(content::BrowserContext* context) | 877 ManagementAPI::ManagementAPI(content::BrowserContext* context) |
| 885 : browser_context_(context), | 878 : browser_context_(context), |
| 886 delegate_(ExtensionsAPIClient::Get()->CreateManagementAPIDelegate()) { | 879 delegate_(ExtensionsAPIClient::Get()->CreateManagementAPIDelegate()) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 906 ManagementAPI::GetFactoryInstance() { | 899 ManagementAPI::GetFactoryInstance() { |
| 907 return g_factory.Pointer(); | 900 return g_factory.Pointer(); |
| 908 } | 901 } |
| 909 | 902 |
| 910 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { | 903 void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
| 911 management_event_router_.reset(new ManagementEventRouter(browser_context_)); | 904 management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
| 912 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 905 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
| 913 } | 906 } |
| 914 | 907 |
| 915 } // namespace extensions | 908 } // namespace extensions |
| OLD | NEW |