| 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 "apps/app_load_service.h" | 7 #include "apps/app_load_service.h" |
| 8 #include "apps/app_restore_service.h" | 8 #include "apps/app_restore_service.h" |
| 9 #include "apps/saved_files_service.h" | 9 #include "apps/saved_files_service.h" |
| 10 #include "apps/shell_window.h" | 10 #include "apps/shell_window.h" |
| 11 #include "apps/shell_window_registry.h" | 11 #include "apps/shell_window_registry.h" |
| 12 #include "base/base64.h" | 12 #include "base/base64.h" |
| 13 #include "base/bind.h" |
| 13 #include "base/command_line.h" | 14 #include "base/command_line.h" |
| 14 #include "base/file_util.h" | 15 #include "base/file_util.h" |
| 15 #include "base/files/file_enumerator.h" | 16 #include "base/files/file_enumerator.h" |
| 16 #include "base/i18n/file_util_icu.h" | 17 #include "base/i18n/file_util_icu.h" |
| 17 #include "base/strings/string_number_conversions.h" | 18 #include "base/strings/string_number_conversions.h" |
| 18 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
| 19 #include "base/values.h" | 20 #include "base/values.h" |
| 20 #include "chrome/browser/chrome_notification_types.h" | 21 #include "chrome/browser/chrome_notification_types.h" |
| 21 #include "chrome/browser/devtools/devtools_window.h" | 22 #include "chrome/browser/devtools/devtools_window.h" |
| 22 #include "chrome/browser/extensions/api/developer_private/developer_private_api_
factory.h" | 23 #include "chrome/browser/extensions/api/developer_private/developer_private_api_
factory.h" |
| 23 #include "chrome/browser/extensions/api/developer_private/entry_picker.h" | 24 #include "chrome/browser/extensions/api/developer_private/entry_picker.h" |
| 24 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 25 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
| 25 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" | 26 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" |
| 26 #include "chrome/browser/extensions/devtools_util.h" | 27 #include "chrome/browser/extensions/devtools_util.h" |
| 27 #include "chrome/browser/extensions/extension_disabled_ui.h" | 28 #include "chrome/browser/extensions/extension_disabled_ui.h" |
| 28 #include "chrome/browser/extensions/extension_error_reporter.h" | 29 #include "chrome/browser/extensions/extension_error_reporter.h" |
| 29 #include "chrome/browser/extensions/extension_service.h" | 30 #include "chrome/browser/extensions/extension_service.h" |
| 30 #include "chrome/browser/extensions/extension_util.h" | 31 #include "chrome/browser/extensions/extension_util.h" |
| 31 #include "chrome/browser/extensions/unpacked_installer.h" | 32 #include "chrome/browser/extensions/unpacked_installer.h" |
| 32 #include "chrome/browser/extensions/updater/extension_updater.h" | 33 #include "chrome/browser/extensions/updater/extension_updater.h" |
| 33 #include "chrome/browser/platform_util.h" | 34 #include "chrome/browser/platform_util.h" |
| 34 #include "chrome/browser/profiles/profile.h" | 35 #include "chrome/browser/profiles/profile.h" |
| 35 #include "chrome/browser/sync_file_system/drive_backend_v1/drive_file_sync_servi
ce.h" | 36 #include "chrome/browser/sync_file_system/drive_backend_v1/drive_file_sync_servi
ce.h" |
| 36 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" | 37 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" |
| 37 #include "chrome/browser/ui/chrome_select_file_policy.h" | 38 #include "chrome/browser/ui/chrome_select_file_policy.h" |
| 39 #include "chrome/browser/ui/webui/extensions/extension_error_ui_util.h" |
| 38 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" | 40 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" |
| 39 #include "chrome/common/extensions/api/developer_private.h" | 41 #include "chrome/common/extensions/api/developer_private.h" |
| 40 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 42 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
| 41 #include "chrome/common/extensions/manifest_handlers/icons_handler.h" | 43 #include "chrome/common/extensions/manifest_handlers/icons_handler.h" |
| 42 #include "chrome/common/extensions/manifest_url_handler.h" | 44 #include "chrome/common/extensions/manifest_url_handler.h" |
| 43 #include "chrome/common/url_constants.h" | 45 #include "chrome/common/url_constants.h" |
| 44 #include "content/public/browser/browser_thread.h" | 46 #include "content/public/browser/browser_thread.h" |
| 45 #include "content/public/browser/notification_service.h" | 47 #include "content/public/browser/notification_service.h" |
| 46 #include "content/public/browser/render_process_host.h" | 48 #include "content/public/browser/render_process_host.h" |
| 47 #include "content/public/browser/render_view_host.h" | 49 #include "content/public/browser/render_view_host.h" |
| 48 #include "content/public/browser/site_instance.h" | 50 #include "content/public/browser/site_instance.h" |
| 49 #include "content/public/browser/storage_partition.h" | 51 #include "content/public/browser/storage_partition.h" |
| 50 #include "content/public/browser/web_contents.h" | 52 #include "content/public/browser/web_contents.h" |
| 53 #include "extensions/browser/extension_error.h" |
| 51 #include "extensions/browser/extension_registry.h" | 54 #include "extensions/browser/extension_registry.h" |
| 52 #include "extensions/browser/extension_system.h" | 55 #include "extensions/browser/extension_system.h" |
| 53 #include "extensions/browser/management_policy.h" | 56 #include "extensions/browser/management_policy.h" |
| 54 #include "extensions/browser/view_type_utils.h" | 57 #include "extensions/browser/view_type_utils.h" |
| 55 #include "extensions/common/constants.h" | 58 #include "extensions/common/constants.h" |
| 56 #include "extensions/common/extension_resource.h" | 59 #include "extensions/common/extension_resource.h" |
| 57 #include "extensions/common/extension_set.h" | 60 #include "extensions/common/extension_set.h" |
| 58 #include "extensions/common/install_warning.h" | 61 #include "extensions/common/install_warning.h" |
| 59 #include "extensions/common/manifest_handlers/background_info.h" | 62 #include "extensions/common/manifest_handlers/background_info.h" |
| 60 #include "extensions/common/manifest_handlers/incognito_info.h" | 63 #include "extensions/common/manifest_handlers/incognito_info.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 | 151 |
| 149 DeveloperPrivateAPI* DeveloperPrivateAPI::Get(Profile* profile) { | 152 DeveloperPrivateAPI* DeveloperPrivateAPI::Get(Profile* profile) { |
| 150 return DeveloperPrivateAPIFactory::GetForProfile(profile); | 153 return DeveloperPrivateAPIFactory::GetForProfile(profile); |
| 151 } | 154 } |
| 152 | 155 |
| 153 DeveloperPrivateAPI::DeveloperPrivateAPI(Profile* profile) : profile_(profile) { | 156 DeveloperPrivateAPI::DeveloperPrivateAPI(Profile* profile) : profile_(profile) { |
| 154 RegisterNotifications(); | 157 RegisterNotifications(); |
| 155 } | 158 } |
| 156 | 159 |
| 157 DeveloperPrivateEventRouter::DeveloperPrivateEventRouter(Profile* profile) | 160 DeveloperPrivateEventRouter::DeveloperPrivateEventRouter(Profile* profile) |
| 158 : profile_(profile) { | 161 : profile_(profile) { |
| 159 int types[] = { | 162 int types[] = { |
| 160 chrome::NOTIFICATION_EXTENSION_INSTALLED, | 163 chrome::NOTIFICATION_EXTENSION_INSTALLED, |
| 161 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 164 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
| 162 chrome::NOTIFICATION_EXTENSION_LOADED, | 165 chrome::NOTIFICATION_EXTENSION_LOADED, |
| 163 chrome::NOTIFICATION_EXTENSION_UNLOADED, | 166 chrome::NOTIFICATION_EXTENSION_UNLOADED, |
| 164 chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED, | 167 chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED, |
| 165 chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED | 168 chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED |
| 166 }; | 169 }; |
| 167 | 170 |
| 168 CHECK(registrar_.IsEmpty()); | 171 CHECK(registrar_.IsEmpty()); |
| 169 for (size_t i = 0; i < arraysize(types); ++i) { | 172 for (size_t i = 0; i < arraysize(types); ++i) { |
| 170 registrar_.Add(this, | 173 registrar_.Add(this, |
| 171 types[i], | 174 types[i], |
| 172 content::Source<Profile>(profile_)); | 175 content::Source<Profile>(profile_)); |
| 173 } | 176 } |
| 177 |
| 178 ErrorConsole::Get(profile)->AddObserver(this); |
| 174 } | 179 } |
| 175 | 180 |
| 181 DeveloperPrivateEventRouter::~DeveloperPrivateEventRouter() { |
| 182 ErrorConsole::Get(profile_)->RemoveObserver(this); |
| 183 } |
| 176 | 184 |
| 177 DeveloperPrivateEventRouter::~DeveloperPrivateEventRouter() {} | 185 void DeveloperPrivateEventRouter::AddExtensionId( |
| 186 const std::string& extension_id) { |
| 187 extension_ids_.insert(extension_id); |
| 188 } |
| 189 |
| 190 void DeveloperPrivateEventRouter::RemoveExtensionId( |
| 191 const std::string& extension_id) { |
| 192 extension_ids_.erase(extension_id); |
| 193 } |
| 178 | 194 |
| 179 void DeveloperPrivateEventRouter::Observe( | 195 void DeveloperPrivateEventRouter::Observe( |
| 180 int type, | 196 int type, |
| 181 const content::NotificationSource& source, | 197 const content::NotificationSource& source, |
| 182 const content::NotificationDetails& details) { | 198 const content::NotificationDetails& details) { |
| 183 const char* event_name = NULL; | 199 const char* event_name = NULL; |
| 184 Profile* profile = content::Source<Profile>(source).ptr(); | 200 Profile* profile = content::Source<Profile>(source).ptr(); |
| 185 CHECK(profile); | 201 CHECK(profile); |
| 186 CHECK(profile_->IsSameProfile(profile)); | 202 CHECK(profile_->IsSameProfile(profile)); |
| 187 developer::EventData event_data; | 203 developer::EventData event_data; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 event_data.item_id = extension->id(); | 241 event_data.item_id = extension->id(); |
| 226 | 242 |
| 227 scoped_ptr<base::ListValue> args(new base::ListValue()); | 243 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 228 args->Append(event_data.ToValue().release()); | 244 args->Append(event_data.ToValue().release()); |
| 229 | 245 |
| 230 event_name = developer_private::OnItemStateChanged::kEventName; | 246 event_name = developer_private::OnItemStateChanged::kEventName; |
| 231 scoped_ptr<Event> event(new Event(event_name, args.Pass())); | 247 scoped_ptr<Event> event(new Event(event_name, args.Pass())); |
| 232 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); | 248 ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); |
| 233 } | 249 } |
| 234 | 250 |
| 251 void DeveloperPrivateEventRouter::OnErrorAdded(const ExtensionError* error) { |
| 252 // We don't want to handle errors thrown by extensions subscribed to these |
| 253 // events (currently only the Apps Developer Tool), because doing so risks |
| 254 // entering a loop. |
| 255 if (extension_ids_.find(error->extension_id()) != extension_ids_.end()) |
| 256 return; |
| 257 |
| 258 developer::EventData event_data; |
| 259 event_data.event_type = developer::EVENT_TYPE_ERROR_ADDED; |
| 260 event_data.item_id = error->extension_id(); |
| 261 |
| 262 scoped_ptr<base::ListValue> args(new base::ListValue); |
| 263 args->Append(event_data.ToValue().release()); |
| 264 |
| 265 ExtensionSystem::Get(profile_)->event_router()->BroadcastEvent( |
| 266 scoped_ptr<Event>(new Event( |
| 267 developer_private::OnItemStateChanged::kEventName, args.Pass()))); |
| 268 } |
| 269 |
| 235 void DeveloperPrivateAPI::SetLastUnpackedDirectory(const base::FilePath& path) { | 270 void DeveloperPrivateAPI::SetLastUnpackedDirectory(const base::FilePath& path) { |
| 236 last_unpacked_directory_ = path; | 271 last_unpacked_directory_ = path; |
| 237 } | 272 } |
| 238 | 273 |
| 239 void DeveloperPrivateAPI::RegisterNotifications() { | 274 void DeveloperPrivateAPI::RegisterNotifications() { |
| 240 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( | 275 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( |
| 241 this, developer_private::OnItemStateChanged::kEventName); | 276 this, developer_private::OnItemStateChanged::kEventName); |
| 242 } | 277 } |
| 243 | 278 |
| 244 DeveloperPrivateAPI::~DeveloperPrivateAPI() {} | 279 DeveloperPrivateAPI::~DeveloperPrivateAPI() {} |
| 245 | 280 |
| 246 void DeveloperPrivateAPI::Shutdown() {} | 281 void DeveloperPrivateAPI::Shutdown() {} |
| 247 | 282 |
| 248 void DeveloperPrivateAPI::OnListenerAdded( | 283 void DeveloperPrivateAPI::OnListenerAdded( |
| 249 const EventListenerInfo& details) { | 284 const EventListenerInfo& details) { |
| 250 if (!developer_private_event_router_) | 285 if (!developer_private_event_router_) { |
| 251 developer_private_event_router_.reset( | 286 developer_private_event_router_.reset( |
| 252 new DeveloperPrivateEventRouter(profile_)); | 287 new DeveloperPrivateEventRouter(profile_)); |
| 288 } |
| 289 |
| 290 developer_private_event_router_->AddExtensionId(details.extension_id); |
| 253 } | 291 } |
| 254 | 292 |
| 255 void DeveloperPrivateAPI::OnListenerRemoved( | 293 void DeveloperPrivateAPI::OnListenerRemoved( |
| 256 const EventListenerInfo& details) { | 294 const EventListenerInfo& details) { |
| 257 if (!ExtensionSystem::Get(profile_)->event_router()->HasEventListener( | 295 if (!ExtensionSystem::Get(profile_)->event_router()->HasEventListener( |
| 258 developer_private::OnItemStateChanged::kEventName)) | 296 developer_private::OnItemStateChanged::kEventName)) { |
| 259 developer_private_event_router_.reset(NULL); | 297 developer_private_event_router_.reset(NULL); |
| 298 } else { |
| 299 developer_private_event_router_->RemoveExtensionId(details.extension_id); |
| 300 } |
| 260 } | 301 } |
| 261 | 302 |
| 262 namespace api { | 303 namespace api { |
| 263 | 304 |
| 264 bool DeveloperPrivateAutoUpdateFunction::RunImpl() { | 305 bool DeveloperPrivateAutoUpdateFunction::RunImpl() { |
| 265 ExtensionUpdater* updater = GetExtensionUpdater(GetProfile()); | 306 ExtensionUpdater* updater = GetExtensionUpdater(GetProfile()); |
| 266 if (updater) | 307 if (updater) |
| 267 updater->CheckNow(ExtensionUpdater::CheckParams()); | 308 updater->CheckNow(ExtensionUpdater::CheckParams()); |
| 268 SetResult(new base::FundamentalValue(true)); | 309 SetResult(new base::FundamentalValue(true)); |
| 269 return true; | 310 return true; |
| 270 } | 311 } |
| 271 | 312 |
| 272 DeveloperPrivateAutoUpdateFunction::~DeveloperPrivateAutoUpdateFunction() {} | 313 DeveloperPrivateAutoUpdateFunction::~DeveloperPrivateAutoUpdateFunction() {} |
| 273 | 314 |
| 274 scoped_ptr<developer::ItemInfo> | 315 scoped_ptr<developer::ItemInfo> |
| 275 DeveloperPrivateGetItemsInfoFunction::CreateItemInfo( | 316 DeveloperPrivateGetItemsInfoFunction::CreateItemInfo(const Extension& item, |
| 276 const Extension& item, | 317 bool item_is_enabled) { |
| 277 bool item_is_enabled) { | |
| 278 scoped_ptr<developer::ItemInfo> info(new developer::ItemInfo()); | 318 scoped_ptr<developer::ItemInfo> info(new developer::ItemInfo()); |
| 279 | 319 |
| 280 ExtensionSystem* system = ExtensionSystem::Get(GetProfile()); | 320 ExtensionSystem* system = ExtensionSystem::Get(GetProfile()); |
| 281 ExtensionService* service = system->extension_service(); | 321 ExtensionService* service = system->extension_service(); |
| 282 ExtensionRegistry* registry = ExtensionRegistry::Get(GetProfile()); | 322 ExtensionRegistry* registry = ExtensionRegistry::Get(GetProfile()); |
| 283 | 323 |
| 284 info->id = item.id(); | 324 info->id = item.id(); |
| 285 info->name = item.name(); | 325 info->name = item.name(); |
| 286 info->enabled = service->IsExtensionEnabled(info->id); | 326 info->enabled = service->IsExtensionEnabled(info->id); |
| 287 info->offline_enabled = OfflineEnabledInfo::IsOfflineEnabled(&item); | 327 info->offline_enabled = OfflineEnabledInfo::IsOfflineEnabled(&item); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 301 info->type = developer::ITEM_TYPE_THEME; | 341 info->type = developer::ITEM_TYPE_THEME; |
| 302 } else if (item.is_extension()) { | 342 } else if (item.is_extension()) { |
| 303 info->type = developer::ITEM_TYPE_EXTENSION; | 343 info->type = developer::ITEM_TYPE_EXTENSION; |
| 304 } else { | 344 } else { |
| 305 NOTREACHED(); | 345 NOTREACHED(); |
| 306 } | 346 } |
| 307 | 347 |
| 308 if (Manifest::IsUnpackedLocation(item.location())) { | 348 if (Manifest::IsUnpackedLocation(item.location())) { |
| 309 info->path.reset( | 349 info->path.reset( |
| 310 new std::string(base::UTF16ToUTF8(item.path().LossyDisplayName()))); | 350 new std::string(base::UTF16ToUTF8(item.path().LossyDisplayName()))); |
| 311 for (std::vector<extensions::InstallWarning>::const_iterator it = | 351 // If the ErrorConsole is enabled, get the errors for the extension and add |
| 312 item.install_warnings().begin(); | 352 // them to the list. Otherwise, use the install warnings (using both is |
| 313 it != item.install_warnings().end(); ++it) { | 353 // redundant). |
| 314 developer::InstallWarning* warning = new developer::InstallWarning(); | 354 ErrorConsole* error_console = ErrorConsole::Get(GetProfile()); |
| 315 warning->message = it->message; | 355 if (error_console->enabled()) { |
| 316 info->install_warnings.push_back(make_linked_ptr(warning)); | 356 const ErrorList& errors = error_console->GetErrorsForExtension(item.id()); |
| 357 if (!errors.empty()) { |
| 358 for (ErrorList::const_iterator iter = errors.begin(); |
| 359 iter != errors.end(); |
| 360 ++iter) { |
| 361 switch ((*iter)->type()) { |
| 362 case ExtensionError::MANIFEST_ERROR: |
| 363 info->manifest_errors.push_back( |
| 364 make_linked_ptr((*iter)->ToValue().release())); |
| 365 case ExtensionError::RUNTIME_ERROR: { |
| 366 const RuntimeError* error = |
| 367 static_cast<const RuntimeError*>(*iter); |
| 368 scoped_ptr<base::DictionaryValue> value = error->ToValue(); |
| 369 bool can_inspect = content::RenderViewHost::FromID( |
| 370 error->render_process_id(), |
| 371 error->render_view_id()) != NULL; |
| 372 value->SetBoolean("canInspect", can_inspect); |
| 373 info->runtime_errors.push_back(make_linked_ptr(value.release())); |
| 374 } |
| 375 } |
| 376 } |
| 377 } |
| 378 } else { |
| 379 for (std::vector<extensions::InstallWarning>::const_iterator it = |
| 380 item.install_warnings().begin(); |
| 381 it != item.install_warnings().end(); |
| 382 ++it) { |
| 383 scoped_ptr<developer::InstallWarning> warning( |
| 384 new developer::InstallWarning); |
| 385 warning->message = it->message; |
| 386 info->install_warnings.push_back(make_linked_ptr(warning.release())); |
| 387 } |
| 317 } | 388 } |
| 318 } | 389 } |
| 319 | 390 |
| 320 info->incognito_enabled = util::IsIncognitoEnabled(item.id(), GetProfile()); | 391 info->incognito_enabled = util::IsIncognitoEnabled(item.id(), GetProfile()); |
| 321 info->wants_file_access = item.wants_file_access(); | 392 info->wants_file_access = item.wants_file_access(); |
| 322 info->allow_file_access = util::AllowFileAccess(item.id(), GetProfile()); | 393 info->allow_file_access = util::AllowFileAccess(item.id(), GetProfile()); |
| 323 info->allow_reload = Manifest::IsUnpackedLocation(item.location()); | 394 info->allow_reload = Manifest::IsUnpackedLocation(item.location()); |
| 324 info->is_unpacked = Manifest::IsUnpackedLocation(item.location()); | 395 info->is_unpacked = Manifest::IsUnpackedLocation(item.location()); |
| 325 info->terminated = registry->terminated_extensions().Contains(item.id()); | 396 info->terminated = registry->terminated_extensions().Contains(item.id()); |
| 326 info->allow_incognito = item.can_be_incognito_enabled(); | 397 info->allow_incognito = item.can_be_incognito_enabled(); |
| (...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1200 Release(); | 1271 Release(); |
| 1201 } | 1272 } |
| 1202 | 1273 |
| 1203 void DeveloperPrivateChoosePathFunction::FileSelectionCanceled() { | 1274 void DeveloperPrivateChoosePathFunction::FileSelectionCanceled() { |
| 1204 SendResponse(false); | 1275 SendResponse(false); |
| 1205 Release(); | 1276 Release(); |
| 1206 } | 1277 } |
| 1207 | 1278 |
| 1208 DeveloperPrivateChoosePathFunction::~DeveloperPrivateChoosePathFunction() {} | 1279 DeveloperPrivateChoosePathFunction::~DeveloperPrivateChoosePathFunction() {} |
| 1209 | 1280 |
| 1210 bool DeveloperPrivateGetStringsFunction::RunImpl() { | |
| 1211 base::DictionaryValue* dict = new base::DictionaryValue(); | |
| 1212 SetResult(dict); | |
| 1213 | |
| 1214 webui::SetFontAndTextDirection(dict); | |
| 1215 | |
| 1216 #define SET_STRING(id, idr) \ | |
| 1217 dict->SetString(id, l10n_util::GetStringUTF16(idr)) | |
| 1218 SET_STRING("extensionSettings", IDS_MANAGE_EXTENSIONS_SETTING_WINDOWS_TITLE); | |
| 1219 | |
| 1220 SET_STRING("appsDevtoolSearch", IDS_APPS_DEVTOOL_SEARCH); | |
| 1221 SET_STRING("appsDevtoolApps", IDS_APPS_DEVTOOL_APPS_INSTALLED); | |
| 1222 SET_STRING("appsDevtoolExtensions", IDS_APPS_DEVTOOL_EXTENSIONS_INSTALLED); | |
| 1223 SET_STRING("appsDevtoolNoExtensions", IDS_EXTENSIONS_NONE_INSTALLED); | |
| 1224 SET_STRING("appsDevtoolUnpacked", IDS_APPS_DEVTOOL_UNPACKED_INSTALLED); | |
| 1225 SET_STRING("appsDevtoolInstalled", IDS_APPS_DEVTOOL_INSTALLED); | |
| 1226 SET_STRING("appsDevtoolNoPackedApps", IDS_APPS_DEVTOOL_NO_PACKED_APPS); | |
| 1227 SET_STRING("appsDevtoolNoUnpackedApps", IDS_APPS_DEVTOOL_NO_UNPACKED_APPS); | |
| 1228 SET_STRING("appsDevtoolNoPackedExtensions", | |
| 1229 IDS_APPS_DEVTOOL_NO_PACKED_EXTENSIONS); | |
| 1230 SET_STRING("appsDevtoolNoUnpackedExtensions", | |
| 1231 IDS_APPS_DEVTOOL_NO_UNPACKED_EXTENSIONS); | |
| 1232 SET_STRING("appsDevtoolUpdating", IDS_APPS_DEVTOOL_UPDATING); | |
| 1233 SET_STRING("extensionSettingsGetMoreExtensions", IDS_GET_MORE_EXTENSIONS); | |
| 1234 SET_STRING("extensionSettingsExtensionId", IDS_EXTENSIONS_ID); | |
| 1235 SET_STRING("extensionSettingsExtensionPath", IDS_EXTENSIONS_PATH); | |
| 1236 SET_STRING("extensionSettingsInspectViews", IDS_EXTENSIONS_INSPECT_VIEWS); | |
| 1237 SET_STRING("extensionSettingsInstallWarnings", | |
| 1238 IDS_EXTENSIONS_INSTALL_WARNINGS); | |
| 1239 SET_STRING("viewIncognito", IDS_EXTENSIONS_VIEW_INCOGNITO); | |
| 1240 SET_STRING("viewInactive", IDS_EXTENSIONS_VIEW_INACTIVE); | |
| 1241 SET_STRING("backgroundPage", IDS_EXTENSIONS_BACKGROUND_PAGE); | |
| 1242 SET_STRING("extensionSettingsEnable", IDS_EXTENSIONS_ENABLE); | |
| 1243 SET_STRING("extensionSettingsEnabled", IDS_EXTENSIONS_ENABLED); | |
| 1244 SET_STRING("extensionSettingsRemove", IDS_EXTENSIONS_REMOVE); | |
| 1245 SET_STRING("extensionSettingsEnableIncognito", | |
| 1246 IDS_EXTENSIONS_ENABLE_INCOGNITO); | |
| 1247 SET_STRING("extensionSettingsAllowFileAccess", | |
| 1248 IDS_EXTENSIONS_ALLOW_FILE_ACCESS); | |
| 1249 SET_STRING("extensionSettingsReloadTerminated", | |
| 1250 IDS_EXTENSIONS_RELOAD_TERMINATED); | |
| 1251 SET_STRING("extensionSettingsReloadUnpacked", | |
| 1252 IDS_APPS_DEV_TOOLS_RELOAD_UNPACKED); | |
| 1253 SET_STRING("extensionSettingsLaunch", IDS_EXTENSIONS_LAUNCH); | |
| 1254 SET_STRING("extensionSettingsOptions", IDS_EXTENSIONS_OPTIONS_LINK); | |
| 1255 SET_STRING("extensionSettingsPermissions", IDS_EXTENSIONS_PERMISSIONS_LINK); | |
| 1256 SET_STRING("extensionSettingsVisitWebsite", IDS_EXTENSIONS_VISIT_WEBSITE); | |
| 1257 SET_STRING("extensionSettingsVisitWebStore", IDS_EXTENSIONS_VISIT_WEBSTORE); | |
| 1258 SET_STRING("extensionSettingsPolicyControlled", | |
| 1259 IDS_EXTENSIONS_POLICY_CONTROLLED); | |
| 1260 SET_STRING("extensionSettingsManagedMode", | |
| 1261 IDS_EXTENSIONS_LOCKED_MANAGED_USER); | |
| 1262 SET_STRING("extensionSettingsShowButton", IDS_EXTENSIONS_SHOW_BUTTON); | |
| 1263 SET_STRING("appsDevtoolLoadUnpackedButton", | |
| 1264 IDS_APPS_DEVTOOL_LOAD_UNPACKED_BUTTON); | |
| 1265 SET_STRING("appsDevtoolPackButton", IDS_APPS_DEVTOOL_PACK_BUTTON); | |
| 1266 SET_STRING("extensionSettingsCommandsLink", | |
| 1267 IDS_EXTENSIONS_COMMANDS_CONFIGURE); | |
| 1268 SET_STRING("appsDevtoolUpdateButton", IDS_APPS_DEVTOOL_UPDATE_BUTTON); | |
| 1269 SET_STRING("extensionSettingsWarningsTitle", IDS_EXTENSION_WARNINGS_TITLE); | |
| 1270 SET_STRING("extensionSettingsShowDetails", IDS_EXTENSIONS_SHOW_DETAILS); | |
| 1271 SET_STRING("extensionSettingsHideDetails", IDS_EXTENSIONS_HIDE_DETAILS); | |
| 1272 SET_STRING("extensionUninstall", IDS_EXTENSIONS_UNINSTALL); | |
| 1273 SET_STRING("extensionsPermissionsHeading", | |
| 1274 IDS_EXTENSIONS_PERMISSIONS_HEADING); | |
| 1275 SET_STRING("extensionsPermissionsClose", IDS_EXTENSIONS_PERMISSIONS_CLOSE); | |
| 1276 SET_STRING("extensionDisabled", IDS_EXTENSIONS_DISABLED); | |
| 1277 SET_STRING("extensionSettingsShowLogsButton", IDS_EXTENSIONS_SHOW_LOGS); | |
| 1278 SET_STRING("extensionSettingsMoreDetailsButton", IDS_EXTENSIONS_MORE_DETAILS); | |
| 1279 SET_STRING("extensionSettingsVersion", IDS_EXTENSIONS_VERSION); | |
| 1280 SET_STRING("extensionSettingsDelete", IDS_EXTENSIONS_ADT_DELETE); | |
| 1281 SET_STRING("extensionSettingsPack", IDS_EXTENSIONS_PACK); | |
| 1282 | |
| 1283 // Pack Extension strings | |
| 1284 SET_STRING("packExtensionOverlay", IDS_EXTENSION_PACK_DIALOG_TITLE); | |
| 1285 SET_STRING("packExtensionHeading", IDS_EXTENSION_ADT_PACK_DIALOG_HEADING); | |
| 1286 SET_STRING("packButton", IDS_EXTENSION_ADT_PACK_BUTTON); | |
| 1287 SET_STRING("ok", IDS_OK); | |
| 1288 SET_STRING("cancel", IDS_CANCEL); | |
| 1289 SET_STRING("packExtensionRootDir", | |
| 1290 IDS_EXTENSION_PACK_DIALOG_ROOT_DIRECTORY_LABEL); | |
| 1291 SET_STRING("packExtensionPrivateKey", | |
| 1292 IDS_EXTENSION_PACK_DIALOG_PRIVATE_KEY_LABEL); | |
| 1293 SET_STRING("packExtensionBrowseButton", IDS_EXTENSION_PACK_DIALOG_BROWSE); | |
| 1294 SET_STRING("packExtensionProceedAnyway", IDS_EXTENSION_PROCEED_ANYWAY); | |
| 1295 SET_STRING("packExtensionWarningTitle", IDS_EXTENSION_PACK_WARNING_TITLE); | |
| 1296 SET_STRING("packExtensionErrorTitle", IDS_EXTENSION_PACK_ERROR_TITLE); | |
| 1297 SET_STRING("packAppOverlay", IDS_EXTENSION_PACK_APP_DIALOG_TITLE); | |
| 1298 SET_STRING("packAppHeading", IDS_EXTENSION_ADT_PACK_APP_DIALOG_HEADING); | |
| 1299 | |
| 1300 // Delete confirmation dialog. | |
| 1301 SET_STRING("deleteConfirmationDeleteButton", | |
| 1302 IDS_APPS_DEVTOOL_DELETE_CONFIRMATION_BUTTON); | |
| 1303 SET_STRING("deleteConfirmationTitle", | |
| 1304 IDS_APPS_DEVTOOL_DELETE_CONFIRMATION_TITLE); | |
| 1305 SET_STRING("deleteConfirmationMessageApp", | |
| 1306 IDS_APPS_DEVTOOL_DELETE_CONFIRMATION_MESSAGE_APP); | |
| 1307 SET_STRING("deleteConfirmationMessageExtension", | |
| 1308 IDS_APPS_DEVTOOL_DELETE_CONFIRMATION_MESSAGE_EXTENSION); | |
| 1309 | |
| 1310 // Dialog when profile is managed. | |
| 1311 SET_STRING("managedProfileDialogCloseButton", | |
| 1312 IDS_APPS_DEVTOOL_MANAGED_PROFILE_DIALOG_CLOSE_BUTTON); | |
| 1313 SET_STRING("managedProfileDialogTitle", | |
| 1314 IDS_APPS_DEVTOOL_MANAGED_PROFILE_DIALOG_TITLE); | |
| 1315 SET_STRING("managedProfileDialogDescription", | |
| 1316 IDS_APPS_DEVTOOL_MANAGED_PROFILE_DIALOG_DESCRIPTION); | |
| 1317 | |
| 1318 #undef SET_STRING | |
| 1319 return true; | |
| 1320 } | |
| 1321 | |
| 1322 DeveloperPrivateGetStringsFunction::~DeveloperPrivateGetStringsFunction() {} | |
| 1323 | |
| 1324 bool DeveloperPrivateIsProfileManagedFunction::RunImpl() { | 1281 bool DeveloperPrivateIsProfileManagedFunction::RunImpl() { |
| 1325 SetResult(new base::FundamentalValue(GetProfile()->IsManaged())); | 1282 SetResult(new base::FundamentalValue(GetProfile()->IsManaged())); |
| 1326 return true; | 1283 return true; |
| 1327 } | 1284 } |
| 1328 | 1285 |
| 1329 DeveloperPrivateIsProfileManagedFunction:: | 1286 DeveloperPrivateIsProfileManagedFunction:: |
| 1330 ~DeveloperPrivateIsProfileManagedFunction() { | 1287 ~DeveloperPrivateIsProfileManagedFunction() { |
| 1331 } | 1288 } |
| 1332 | 1289 |
| 1290 DeveloperPrivateRequestFileSourceFunction:: |
| 1291 DeveloperPrivateRequestFileSourceFunction() {} |
| 1292 |
| 1293 DeveloperPrivateRequestFileSourceFunction:: |
| 1294 ~DeveloperPrivateRequestFileSourceFunction() {} |
| 1295 |
| 1296 bool DeveloperPrivateRequestFileSourceFunction::RunImpl() { |
| 1297 scoped_ptr<developer::RequestFileSource::Params> params( |
| 1298 developer::RequestFileSource::Params::Create(*args_)); |
| 1299 EXTENSION_FUNCTION_VALIDATE(params.get() != NULL); |
| 1300 |
| 1301 base::DictionaryValue* dict = NULL; |
| 1302 if (!params->dict->GetAsDictionary(&dict)) { |
| 1303 NOTREACHED(); |
| 1304 return false; |
| 1305 } |
| 1306 |
| 1307 AddRef(); // Balanced in LaunchCallback(). |
| 1308 error_ui_util::HandleRequestFileSource( |
| 1309 dict, |
| 1310 GetProfile(), |
| 1311 base::Bind(&DeveloperPrivateRequestFileSourceFunction::LaunchCallback, |
| 1312 base::Unretained(this))); |
| 1313 return true; |
| 1314 } |
| 1315 |
| 1316 void DeveloperPrivateRequestFileSourceFunction::LaunchCallback( |
| 1317 const base::DictionaryValue& results) { |
| 1318 SetResult(results.DeepCopy()); |
| 1319 SendResponse(true); |
| 1320 Release(); // Balanced in RunImpl(). |
| 1321 } |
| 1322 |
| 1323 DeveloperPrivateOpenDevToolsFunction::DeveloperPrivateOpenDevToolsFunction() {} |
| 1324 DeveloperPrivateOpenDevToolsFunction::~DeveloperPrivateOpenDevToolsFunction() {} |
| 1325 |
| 1326 bool DeveloperPrivateOpenDevToolsFunction::RunImpl() { |
| 1327 scoped_ptr<developer::OpenDevTools::Params> params( |
| 1328 developer::OpenDevTools::Params::Create(*args_)); |
| 1329 EXTENSION_FUNCTION_VALIDATE(params.get() != NULL); |
| 1330 |
| 1331 base::DictionaryValue* dict = NULL; |
| 1332 if (!params->dict->GetAsDictionary(&dict)) { |
| 1333 NOTREACHED(); |
| 1334 return false; |
| 1335 } |
| 1336 |
| 1337 error_ui_util::HandleOpenDevTools(dict); |
| 1338 |
| 1339 return true; |
| 1340 } |
| 1341 |
| 1333 } // namespace api | 1342 } // namespace api |
| 1334 | 1343 |
| 1335 } // namespace extensions | 1344 } // namespace extensions |
| OLD | NEW |