Commit 4b089c4c authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions Functions] Migrate Cloud Print to UIThreadExtensionFunction

Migrate the cloud print API to use UIThreadExtensionFunction instead of
ChromeAsyncExtensionFunction.

Bug: 634140
Change-Id: Ic80be088ff5185a441a87b716227aef1433e5623
Reviewed-on: https://chromium-review.googlesource.com/1066817
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarIstiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560370}
parent 3d75f0ee
......@@ -9,6 +9,7 @@
#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/cloud_print_private.h"
#include "google_apis/google_api_keys.h"
#include "net/base/network_interfaces.h"
......@@ -44,31 +45,30 @@ CloudPrintPrivateSetupConnectorFunction::
~CloudPrintPrivateSetupConnectorFunction() {
}
bool CloudPrintPrivateSetupConnectorFunction::RunAsync() {
ExtensionFunction::ResponseAction
CloudPrintPrivateSetupConnectorFunction::Run() {
using api::cloud_print_private::SetupConnector::Params;
std::unique_ptr<Params> params(Params::Create(*args_));
if (CloudPrintTestsDelegate::Get()) {
CloudPrintTestsDelegate::Get()->SetupConnector(
params->user_email, params->robot_email, params->credentials,
params->user_settings);
SendResponse(true);
return true;
return RespondNow(NoArguments());
}
base::Value user_settings_value =
base::Value::FromUniquePtrValue(params->user_settings.ToValue());
CloudPrintProxyService* service =
CloudPrintProxyServiceFactory::GetForProfile(GetProfile());
CloudPrintProxyServiceFactory::GetForProfile(
Profile::FromBrowserContext(browser_context()));
if (!service) {
error_ = kErrorIncognito;
return false;
return RespondNow(Error(kErrorIncognito));
}
service->EnableForUserWithRobot(params->credentials, params->robot_email,
params->user_email,
std::move(user_settings_value));
SendResponse(true);
return true;
return RespondNow(NoArguments());
}
CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() {
......@@ -77,13 +77,11 @@ CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() {
CloudPrintPrivateGetHostNameFunction::~CloudPrintPrivateGetHostNameFunction() {
}
bool CloudPrintPrivateGetHostNameFunction::RunAsync() {
SetResult(std::make_unique<base::Value>(
ExtensionFunction::ResponseAction CloudPrintPrivateGetHostNameFunction::Run() {
return RespondNow(OneArgument(std::make_unique<base::Value>(
CloudPrintTestsDelegate::Get()
? CloudPrintTestsDelegate::Get()->GetHostName()
: net::GetHostName()));
SendResponse(true);
return true;
: net::GetHostName())));
}
CloudPrintPrivateGetPrintersFunction::CloudPrintPrivateGetPrintersFunction() {
......@@ -94,25 +92,28 @@ CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() {
void CloudPrintPrivateGetPrintersFunction::SendResults(
const std::vector<std::string>& printers) {
results_ = api::cloud_print_private::GetPrinters::Results::Create(printers);
SendResponse(true);
Respond(ArgumentList(
api::cloud_print_private::GetPrinters::Results::Create(printers)));
}
bool CloudPrintPrivateGetPrintersFunction::RunAsync() {
ExtensionFunction::ResponseAction CloudPrintPrivateGetPrintersFunction::Run() {
if (CloudPrintTestsDelegate::Get()) {
SendResults(CloudPrintTestsDelegate::Get()->GetPrinters());
return true;
return RespondNow(
ArgumentList(api::cloud_print_private::GetPrinters::Results::Create(
CloudPrintTestsDelegate::Get()->GetPrinters())));
}
CloudPrintProxyService* service =
CloudPrintProxyServiceFactory::GetForProfile(GetProfile());
if (!service) {
error_ = kErrorIncognito;
return false;
}
CloudPrintProxyServiceFactory::GetForProfile(
Profile::FromBrowserContext(browser_context()));
if (!service)
return RespondNow(Error(kErrorIncognito));
// TODO(https://crbug.com/845250): CloudPrintProxyService::GetPrinters() may
// not invoke the callback, which means this function may never respond.
service->GetPrinters(
base::Bind(&CloudPrintPrivateGetPrintersFunction::SendResults, this));
return true;
return RespondLater();
}
......@@ -122,13 +123,11 @@ CloudPrintPrivateGetClientIdFunction::CloudPrintPrivateGetClientIdFunction() {
CloudPrintPrivateGetClientIdFunction::~CloudPrintPrivateGetClientIdFunction() {
}
bool CloudPrintPrivateGetClientIdFunction::RunAsync() {
SetResult(std::make_unique<base::Value>(
ExtensionFunction::ResponseAction CloudPrintPrivateGetClientIdFunction::Run() {
return RespondNow(OneArgument(std::make_unique<base::Value>(
CloudPrintTestsDelegate::Get()
? CloudPrintTestsDelegate::Get()->GetClientId()
: google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT)));
SendResponse(true);
return true;
: google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))));
}
} // namespace extensions
......@@ -9,7 +9,7 @@
#include <vector>
#include "build/build_config.h"
#include "chrome/browser/extensions/chrome_extension_function.h"
#include "extensions/browser/extension_function.h"
#include "printing/buildflags/buildflags.h"
#if !BUILDFLAG(ENABLE_PRINT_PREVIEW) || defined(OS_CHROMEOS)
......@@ -49,7 +49,7 @@ class CloudPrintTestsDelegate {
};
class CloudPrintPrivateSetupConnectorFunction
: public ChromeAsyncExtensionFunction {
: public UIThreadExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.setupConnector",
CLOUDPRINTPRIVATE_SETUPCONNECTOR)
......@@ -60,11 +60,10 @@ class CloudPrintPrivateSetupConnectorFunction
~CloudPrintPrivateSetupConnectorFunction() override;
// ExtensionFunction:
bool RunAsync() override;
ResponseAction Run() override;
};
class CloudPrintPrivateGetHostNameFunction
: public ChromeAsyncExtensionFunction {
class CloudPrintPrivateGetHostNameFunction : public UIThreadExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getHostName",
CLOUDPRINTPRIVATE_GETHOSTNAME)
......@@ -75,11 +74,10 @@ class CloudPrintPrivateGetHostNameFunction
~CloudPrintPrivateGetHostNameFunction() override;
// ExtensionFunction:
bool RunAsync() override;
ResponseAction Run() override;
};
class CloudPrintPrivateGetPrintersFunction
: public ChromeAsyncExtensionFunction {
class CloudPrintPrivateGetPrintersFunction : public UIThreadExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getPrinters",
CLOUDPRINTPRIVATE_GETPRINTERS)
......@@ -93,11 +91,10 @@ class CloudPrintPrivateGetPrintersFunction
void SendResults(const std::vector<std::string>& printers);
// ExtensionFunction:
bool RunAsync() override;
ResponseAction Run() override;
};
class CloudPrintPrivateGetClientIdFunction
: public ChromeAsyncExtensionFunction {
class CloudPrintPrivateGetClientIdFunction : public UIThreadExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId",
CLOUDPRINTPRIVATE_GETCLIENTID);
......@@ -108,7 +105,7 @@ class CloudPrintPrivateGetClientIdFunction
~CloudPrintPrivateGetClientIdFunction() override;
// ExtensionFunction:
bool RunAsync() override;
ResponseAction Run() override;
};
} // namespace extensions
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment