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 @@ ...@@ -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.h"
#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.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 "chrome/common/extensions/api/cloud_print_private.h"
#include "google_apis/google_api_keys.h" #include "google_apis/google_api_keys.h"
#include "net/base/network_interfaces.h" #include "net/base/network_interfaces.h"
...@@ -44,31 +45,30 @@ CloudPrintPrivateSetupConnectorFunction:: ...@@ -44,31 +45,30 @@ CloudPrintPrivateSetupConnectorFunction::
~CloudPrintPrivateSetupConnectorFunction() { ~CloudPrintPrivateSetupConnectorFunction() {
} }
bool CloudPrintPrivateSetupConnectorFunction::RunAsync() { ExtensionFunction::ResponseAction
CloudPrintPrivateSetupConnectorFunction::Run() {
using api::cloud_print_private::SetupConnector::Params; using api::cloud_print_private::SetupConnector::Params;
std::unique_ptr<Params> params(Params::Create(*args_)); std::unique_ptr<Params> params(Params::Create(*args_));
if (CloudPrintTestsDelegate::Get()) { if (CloudPrintTestsDelegate::Get()) {
CloudPrintTestsDelegate::Get()->SetupConnector( CloudPrintTestsDelegate::Get()->SetupConnector(
params->user_email, params->robot_email, params->credentials, params->user_email, params->robot_email, params->credentials,
params->user_settings); params->user_settings);
SendResponse(true); return RespondNow(NoArguments());
return true;
} }
base::Value user_settings_value = base::Value user_settings_value =
base::Value::FromUniquePtrValue(params->user_settings.ToValue()); base::Value::FromUniquePtrValue(params->user_settings.ToValue());
CloudPrintProxyService* service = CloudPrintProxyService* service =
CloudPrintProxyServiceFactory::GetForProfile(GetProfile()); CloudPrintProxyServiceFactory::GetForProfile(
Profile::FromBrowserContext(browser_context()));
if (!service) { if (!service) {
error_ = kErrorIncognito; return RespondNow(Error(kErrorIncognito));
return false;
} }
service->EnableForUserWithRobot(params->credentials, params->robot_email, service->EnableForUserWithRobot(params->credentials, params->robot_email,
params->user_email, params->user_email,
std::move(user_settings_value)); std::move(user_settings_value));
SendResponse(true); return RespondNow(NoArguments());
return true;
} }
CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() { CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() {
...@@ -77,13 +77,11 @@ CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() { ...@@ -77,13 +77,11 @@ CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() {
CloudPrintPrivateGetHostNameFunction::~CloudPrintPrivateGetHostNameFunction() { CloudPrintPrivateGetHostNameFunction::~CloudPrintPrivateGetHostNameFunction() {
} }
bool CloudPrintPrivateGetHostNameFunction::RunAsync() { ExtensionFunction::ResponseAction CloudPrintPrivateGetHostNameFunction::Run() {
SetResult(std::make_unique<base::Value>( return RespondNow(OneArgument(std::make_unique<base::Value>(
CloudPrintTestsDelegate::Get() CloudPrintTestsDelegate::Get()
? CloudPrintTestsDelegate::Get()->GetHostName() ? CloudPrintTestsDelegate::Get()->GetHostName()
: net::GetHostName())); : net::GetHostName())));
SendResponse(true);
return true;
} }
CloudPrintPrivateGetPrintersFunction::CloudPrintPrivateGetPrintersFunction() { CloudPrintPrivateGetPrintersFunction::CloudPrintPrivateGetPrintersFunction() {
...@@ -94,25 +92,28 @@ CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() { ...@@ -94,25 +92,28 @@ CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() {
void CloudPrintPrivateGetPrintersFunction::SendResults( void CloudPrintPrivateGetPrintersFunction::SendResults(
const std::vector<std::string>& printers) { const std::vector<std::string>& printers) {
results_ = api::cloud_print_private::GetPrinters::Results::Create(printers); Respond(ArgumentList(
SendResponse(true); api::cloud_print_private::GetPrinters::Results::Create(printers)));
} }
bool CloudPrintPrivateGetPrintersFunction::RunAsync() { ExtensionFunction::ResponseAction CloudPrintPrivateGetPrintersFunction::Run() {
if (CloudPrintTestsDelegate::Get()) { if (CloudPrintTestsDelegate::Get()) {
SendResults(CloudPrintTestsDelegate::Get()->GetPrinters()); return RespondNow(
return true; ArgumentList(api::cloud_print_private::GetPrinters::Results::Create(
CloudPrintTestsDelegate::Get()->GetPrinters())));
} }
CloudPrintProxyService* service = CloudPrintProxyService* service =
CloudPrintProxyServiceFactory::GetForProfile(GetProfile()); CloudPrintProxyServiceFactory::GetForProfile(
if (!service) { Profile::FromBrowserContext(browser_context()));
error_ = kErrorIncognito; if (!service)
return false; 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( service->GetPrinters(
base::Bind(&CloudPrintPrivateGetPrintersFunction::SendResults, this)); base::Bind(&CloudPrintPrivateGetPrintersFunction::SendResults, this));
return true; return RespondLater();
} }
...@@ -122,13 +123,11 @@ CloudPrintPrivateGetClientIdFunction::CloudPrintPrivateGetClientIdFunction() { ...@@ -122,13 +123,11 @@ CloudPrintPrivateGetClientIdFunction::CloudPrintPrivateGetClientIdFunction() {
CloudPrintPrivateGetClientIdFunction::~CloudPrintPrivateGetClientIdFunction() { CloudPrintPrivateGetClientIdFunction::~CloudPrintPrivateGetClientIdFunction() {
} }
bool CloudPrintPrivateGetClientIdFunction::RunAsync() { ExtensionFunction::ResponseAction CloudPrintPrivateGetClientIdFunction::Run() {
SetResult(std::make_unique<base::Value>( return RespondNow(OneArgument(std::make_unique<base::Value>(
CloudPrintTestsDelegate::Get() CloudPrintTestsDelegate::Get()
? CloudPrintTestsDelegate::Get()->GetClientId() ? CloudPrintTestsDelegate::Get()->GetClientId()
: google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))); : google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))));
SendResponse(true);
return true;
} }
} // namespace extensions } // namespace extensions
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include <vector> #include <vector>
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/extensions/chrome_extension_function.h" #include "extensions/browser/extension_function.h"
#include "printing/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h"
#if !BUILDFLAG(ENABLE_PRINT_PREVIEW) || defined(OS_CHROMEOS) #if !BUILDFLAG(ENABLE_PRINT_PREVIEW) || defined(OS_CHROMEOS)
...@@ -49,7 +49,7 @@ class CloudPrintTestsDelegate { ...@@ -49,7 +49,7 @@ class CloudPrintTestsDelegate {
}; };
class CloudPrintPrivateSetupConnectorFunction class CloudPrintPrivateSetupConnectorFunction
: public ChromeAsyncExtensionFunction { : public UIThreadExtensionFunction {
public: public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.setupConnector", DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.setupConnector",
CLOUDPRINTPRIVATE_SETUPCONNECTOR) CLOUDPRINTPRIVATE_SETUPCONNECTOR)
...@@ -60,11 +60,10 @@ class CloudPrintPrivateSetupConnectorFunction ...@@ -60,11 +60,10 @@ class CloudPrintPrivateSetupConnectorFunction
~CloudPrintPrivateSetupConnectorFunction() override; ~CloudPrintPrivateSetupConnectorFunction() override;
// ExtensionFunction: // ExtensionFunction:
bool RunAsync() override; ResponseAction Run() override;
}; };
class CloudPrintPrivateGetHostNameFunction class CloudPrintPrivateGetHostNameFunction : public UIThreadExtensionFunction {
: public ChromeAsyncExtensionFunction {
public: public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getHostName", DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getHostName",
CLOUDPRINTPRIVATE_GETHOSTNAME) CLOUDPRINTPRIVATE_GETHOSTNAME)
...@@ -75,11 +74,10 @@ class CloudPrintPrivateGetHostNameFunction ...@@ -75,11 +74,10 @@ class CloudPrintPrivateGetHostNameFunction
~CloudPrintPrivateGetHostNameFunction() override; ~CloudPrintPrivateGetHostNameFunction() override;
// ExtensionFunction: // ExtensionFunction:
bool RunAsync() override; ResponseAction Run() override;
}; };
class CloudPrintPrivateGetPrintersFunction class CloudPrintPrivateGetPrintersFunction : public UIThreadExtensionFunction {
: public ChromeAsyncExtensionFunction {
public: public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getPrinters", DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getPrinters",
CLOUDPRINTPRIVATE_GETPRINTERS) CLOUDPRINTPRIVATE_GETPRINTERS)
...@@ -93,11 +91,10 @@ class CloudPrintPrivateGetPrintersFunction ...@@ -93,11 +91,10 @@ class CloudPrintPrivateGetPrintersFunction
void SendResults(const std::vector<std::string>& printers); void SendResults(const std::vector<std::string>& printers);
// ExtensionFunction: // ExtensionFunction:
bool RunAsync() override; ResponseAction Run() override;
}; };
class CloudPrintPrivateGetClientIdFunction class CloudPrintPrivateGetClientIdFunction : public UIThreadExtensionFunction {
: public ChromeAsyncExtensionFunction {
public: public:
DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId", DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId",
CLOUDPRINTPRIVATE_GETCLIENTID); CLOUDPRINTPRIVATE_GETCLIENTID);
...@@ -108,7 +105,7 @@ class CloudPrintPrivateGetClientIdFunction ...@@ -108,7 +105,7 @@ class CloudPrintPrivateGetClientIdFunction
~CloudPrintPrivateGetClientIdFunction() override; ~CloudPrintPrivateGetClientIdFunction() override;
// ExtensionFunction: // ExtensionFunction:
bool RunAsync() override; ResponseAction Run() override;
}; };
} // namespace extensions } // 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