| Index: chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
|
| diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
|
| index 9d3b30c483027332a1f2d6a9b65301311b52348f..1afbe59eb3ee647dd6e722a33bfac3daf49bdd92 100644
|
| --- a/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
|
| +++ b/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
|
| @@ -274,7 +274,7 @@ bool TabCaptureGetCapturedTabsFunction::RunSync() {
|
| return true;
|
| }
|
|
|
| -bool TabCaptureCaptureOffscreenTabFunction::RunSync() {
|
| +ExtensionFunction::ResponseAction TabCaptureCaptureOffscreenTabFunction::Run() {
|
| std::unique_ptr<TabCapture::CaptureOffscreenTab::Params> params =
|
| TabCapture::CaptureOffscreenTab::Params::Create(*args_);
|
| EXTENSION_FUNCTION_VALIDATE(params);
|
| @@ -291,21 +291,15 @@ bool TabCaptureCaptureOffscreenTabFunction::RunSync() {
|
| arraysize(kChromecastExtensionIds)) ||
|
| SimpleFeature::IsIdInArray(extension()->id(), kMediaRouterExtensionIds,
|
| arraysize(kMediaRouterExtensionIds));
|
| - if (!is_whitelisted_extension) {
|
| - error_ = kNotWhitelistedForOffscreenTabApi;
|
| - return false;
|
| - }
|
| + if (!is_whitelisted_extension)
|
| + return RespondNow(Error(kNotWhitelistedForOffscreenTabApi));
|
|
|
| const GURL start_url(params->start_url);
|
| - if (!IsAcceptableOffscreenTabUrl(start_url)) {
|
| - SetError(kInvalidStartUrl);
|
| - return false;
|
| - }
|
| + if (!IsAcceptableOffscreenTabUrl(start_url))
|
| + return RespondNow(Error(kInvalidStartUrl));
|
|
|
| - if (!OptionsSpecifyAudioOrVideo(params->options)) {
|
| - SetError(kNoAudioOrVideo);
|
| - return false;
|
| - }
|
| + if (!OptionsSpecifyAudioOrVideo(params->options))
|
| + return RespondNow(Error(kNoAudioOrVideo));
|
|
|
| content::WebContents* const extension_web_contents = GetSenderWebContents();
|
| EXTENSION_FUNCTION_VALIDATE(extension_web_contents);
|
| @@ -315,17 +309,14 @@ bool TabCaptureCaptureOffscreenTabFunction::RunSync() {
|
| DetermineInitialSize(params->options),
|
| (is_whitelisted_extension && params->options.presentation_id) ?
|
| *params->options.presentation_id : std::string());
|
| - if (!offscreen_tab) {
|
| - SetError(kTooManyOffscreenTabs);
|
| - return false;
|
| - }
|
| + if (!offscreen_tab)
|
| + return RespondNow(Error(kTooManyOffscreenTabs));
|
|
|
| if (!TabCaptureRegistry::Get(browser_context())->AddRequest(
|
| offscreen_tab->web_contents(), extension()->id(), true)) {
|
| // TODO(miu): Allow multiple consumers of single tab capture.
|
| // http://crbug.com/535336
|
| - SetError(kCapturingSameOffscreenTab);
|
| - return false;
|
| + return RespondNow(Error(kCapturingSameOffscreenTab));
|
| }
|
| FilterDeprecatedGoogConstraints(¶ms->options);
|
| AddMediaStreamSourceConstraints(offscreen_tab->web_contents(),
|
| @@ -335,10 +326,7 @@ bool TabCaptureCaptureOffscreenTabFunction::RunSync() {
|
| // the custom JS bindings in the extension's render process to complete the
|
| // request. See the comment at end of TabCaptureCaptureFunction::RunSync()
|
| // for more details.
|
| - std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue());
|
| - result->MergeDictionary(params->options.ToValue().get());
|
| - SetResult(std::move(result));
|
| - return true;
|
| + return RespondNow(OneArgument(params->options.ToValue()));
|
| }
|
|
|
| // static
|
|
|