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 |