| 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 // Implements the Chrome Extensions Tab Capture API. | 5 // Implements the Chrome Extensions Tab Capture API. |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/api/tab_capture/tab_capture_api.h" | 7 #include "chrome/browser/extensions/api/tab_capture/tab_capture_api.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 // http://crbug.com/579729 | 82 // http://crbug.com/579729 |
| 83 void FilterDeprecatedGoogConstraints(TabCapture::CaptureOptions* options) { | 83 void FilterDeprecatedGoogConstraints(TabCapture::CaptureOptions* options) { |
| 84 const auto FilterGoogKeysFromDictionary = [](base::DictionaryValue* dict) { | 84 const auto FilterGoogKeysFromDictionary = [](base::DictionaryValue* dict) { |
| 85 std::vector<std::string> bad_keys; | 85 std::vector<std::string> bad_keys; |
| 86 base::DictionaryValue::Iterator it(*dict); | 86 base::DictionaryValue::Iterator it(*dict); |
| 87 for (; !it.IsAtEnd(); it.Advance()) { | 87 for (; !it.IsAtEnd(); it.Advance()) { |
| 88 if (it.key().find("goog") == 0) | 88 if (it.key().find("goog") == 0) |
| 89 bad_keys.push_back(it.key()); | 89 bad_keys.push_back(it.key()); |
| 90 } | 90 } |
| 91 for (const std::string& k : bad_keys) { | 91 for (const std::string& k : bad_keys) { |
| 92 scoped_ptr<base::Value> ignored; | 92 std::unique_ptr<base::Value> ignored; |
| 93 dict->RemoveWithoutPathExpansion(k, &ignored); | 93 dict->RemoveWithoutPathExpansion(k, &ignored); |
| 94 } | 94 } |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 if (options->audio_constraints) { | 97 if (options->audio_constraints) { |
| 98 FilterGoogKeysFromDictionary( | 98 FilterGoogKeysFromDictionary( |
| 99 &options->audio_constraints->mandatory.additional_properties); | 99 &options->audio_constraints->mandatory.additional_properties); |
| 100 if (options->audio_constraints->optional) { | 100 if (options->audio_constraints->optional) { |
| 101 FilterGoogKeysFromDictionary( | 101 FilterGoogKeysFromDictionary( |
| 102 &options->audio_constraints->optional->additional_properties); | 102 &options->audio_constraints->optional->additional_properties); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 kStableChromecastExtensionId, // Google Cast Stable | 191 kStableChromecastExtensionId, // Google Cast Stable |
| 192 "hlgmmjhlnlapooncikdpiiokdjcdpjme", // Test cast extension | 192 "hlgmmjhlnlapooncikdpiiokdjcdpjme", // Test cast extension |
| 193 }; | 193 }; |
| 194 | 194 |
| 195 const char* const kMediaRouterExtensionIds[] = { | 195 const char* const kMediaRouterExtensionIds[] = { |
| 196 "pkedcjkdefgpdelpbcmbmeomcjbeemfm", // Stable | 196 "pkedcjkdefgpdelpbcmbmeomcjbeemfm", // Stable |
| 197 "ekpaaapppgpmolpcldedioblbkmijaca", // Beta | 197 "ekpaaapppgpmolpcldedioblbkmijaca", // Beta |
| 198 }; | 198 }; |
| 199 | 199 |
| 200 bool TabCaptureCaptureFunction::RunSync() { | 200 bool TabCaptureCaptureFunction::RunSync() { |
| 201 scoped_ptr<api::tab_capture::Capture::Params> params = | 201 std::unique_ptr<api::tab_capture::Capture::Params> params = |
| 202 TabCapture::Capture::Params::Create(*args_); | 202 TabCapture::Capture::Params::Create(*args_); |
| 203 EXTENSION_FUNCTION_VALIDATE(params); | 203 EXTENSION_FUNCTION_VALIDATE(params); |
| 204 | 204 |
| 205 // Figure out the active WebContents and retrieve the needed ids. | 205 // Figure out the active WebContents and retrieve the needed ids. |
| 206 Browser* target_browser = | 206 Browser* target_browser = |
| 207 chrome::FindAnyBrowser(GetProfile(), include_incognito()); | 207 chrome::FindAnyBrowser(GetProfile(), include_incognito()); |
| 208 if (!target_browser) { | 208 if (!target_browser) { |
| 209 error_ = kFindingTabError; | 209 error_ = kFindingTabError; |
| 210 return false; | 210 return false; |
| 211 } | 211 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 bool TabCaptureGetCapturedTabsFunction::RunSync() { | 266 bool TabCaptureGetCapturedTabsFunction::RunSync() { |
| 267 TabCaptureRegistry* registry = TabCaptureRegistry::Get(GetProfile()); | 267 TabCaptureRegistry* registry = TabCaptureRegistry::Get(GetProfile()); |
| 268 base::ListValue* const list = new base::ListValue(); | 268 base::ListValue* const list = new base::ListValue(); |
| 269 if (registry) | 269 if (registry) |
| 270 registry->GetCapturedTabs(extension()->id(), list); | 270 registry->GetCapturedTabs(extension()->id(), list); |
| 271 SetResult(list); | 271 SetResult(list); |
| 272 return true; | 272 return true; |
| 273 } | 273 } |
| 274 | 274 |
| 275 bool TabCaptureCaptureOffscreenTabFunction::RunSync() { | 275 bool TabCaptureCaptureOffscreenTabFunction::RunSync() { |
| 276 scoped_ptr<TabCapture::CaptureOffscreenTab::Params> params = | 276 std::unique_ptr<TabCapture::CaptureOffscreenTab::Params> params = |
| 277 TabCapture::CaptureOffscreenTab::Params::Create(*args_); | 277 TabCapture::CaptureOffscreenTab::Params::Create(*args_); |
| 278 EXTENSION_FUNCTION_VALIDATE(params); | 278 EXTENSION_FUNCTION_VALIDATE(params); |
| 279 | 279 |
| 280 // Make sure the extension is whitelisted for using this API, regardless of | 280 // Make sure the extension is whitelisted for using this API, regardless of |
| 281 // Chrome channel. | 281 // Chrome channel. |
| 282 // | 282 // |
| 283 // TODO(miu): Use _api_features.json and extensions::Feature library instead. | 283 // TODO(miu): Use _api_features.json and extensions::Feature library instead. |
| 284 // http://crbug.com/537732 | 284 // http://crbug.com/537732 |
| 285 const bool is_whitelisted_extension = | 285 const bool is_whitelisted_extension = |
| 286 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 286 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 } | 382 } |
| 383 } | 383 } |
| 384 | 384 |
| 385 // No maximum size was provided, so just return the default size bounded by | 385 // No maximum size was provided, so just return the default size bounded by |
| 386 // the minimum size. | 386 // the minimum size. |
| 387 return gfx::Size(std::max(kDefaultWidth, min_size.width()), | 387 return gfx::Size(std::max(kDefaultWidth, min_size.width()), |
| 388 std::max(kDefaultHeight, min_size.height())); | 388 std::max(kDefaultHeight, min_size.height())); |
| 389 } | 389 } |
| 390 | 390 |
| 391 } // namespace extensions | 391 } // namespace extensions |
| OLD | NEW |