Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1436)

Unified Diff: chrome/browser/ui/webui/print_preview/print_preview_handler.cc

Issue 2938073003: Change getAccessToken and getExtensionPrinterAccess to sendWithPromise (Closed)
Patch Set: Cleanup Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/print_preview/print_preview_handler.cc
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index b4ceb816e49a79177a1e882ae57422e66f952db4..10297ab43ea5517c87fa3adb2de1aa04546cebdd 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -476,9 +476,11 @@ class PrintPreviewHandler::AccessTokenService
handler_(handler) {
}
- void RequestToken(const std::string& type) {
- if (requests_.find(type) != requests_.end())
+ void RequestToken(const std::string& type, const std::string& callback_id) {
+ if (requests_.find(type) != requests_.end()) {
+ handler_->SendRequestInProgress(callback_id);
return; // Already in progress.
+ }
OAuth2TokenService* service = NULL;
std::string account_id;
@@ -507,29 +509,32 @@ class PrintPreviewHandler::AccessTokenService
std::unique_ptr<OAuth2TokenService::Request> request(
service->StartRequest(account_id, oauth_scopes, this));
requests_[type] = std::move(request);
+ callbacks_[type] = callback_id;
} else {
- handler_->SendAccessToken(type, std::string()); // Unknown type.
+ // Unknown type.
+ handler_->SendAccessToken(callback_id, std::string());
}
}
void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
const std::string& access_token,
const base::Time& expiration_time) override {
- OnServiceResponce(request, access_token);
+ OnServiceResponse(request, access_token);
}
void OnGetTokenFailure(const OAuth2TokenService::Request* request,
const GoogleServiceAuthError& error) override {
- OnServiceResponce(request, std::string());
+ OnServiceResponse(request, std::string());
}
private:
- void OnServiceResponce(const OAuth2TokenService::Request* request,
+ void OnServiceResponse(const OAuth2TokenService::Request* request,
const std::string& access_token) {
for (Requests::iterator i = requests_.begin(); i != requests_.end(); ++i) {
if (i->second.get() == request) {
- handler_->SendAccessToken(i->first, access_token);
+ handler_->SendAccessToken(callbacks_[i->first], access_token);
requests_.erase(i);
+ callbacks_.erase(i->first);
return;
}
}
@@ -539,6 +544,8 @@ class PrintPreviewHandler::AccessTokenService
using Requests =
std::map<std::string, std::unique_ptr<OAuth2TokenService::Request>>;
Requests requests_;
+ using Callbacks = std::map<std::string, std::string>;
+ Callbacks callbacks_;
PrintPreviewHandler* handler_;
DISALLOW_COPY_AND_ASSIGN(AccessTokenService);
@@ -745,14 +752,19 @@ void PrintPreviewHandler::HandleGetExtensionPrinters(
void PrintPreviewHandler::HandleGrantExtensionPrinterAccess(
const base::ListValue* args) {
+ std::string callback_id;
std::string printer_id;
- bool ok = args->GetString(0, &printer_id);
+ bool ok = args->GetString(0, &callback_id) && args->GetString(1, &printer_id);
DCHECK(ok);
+ AllowJavascript();
+ if (callback_id.empty() || printer_id.empty())
+ RejectJavascriptCallback(base::Value(callback_id), base::Value());
+
EnsureExtensionPrinterHandlerSet();
extension_printer_handler_->StartGrantPrinterAccess(
printer_id, base::Bind(&PrintPreviewHandler::OnGotExtensionPrinterInfo,
- weak_factory_.GetWeakPtr(), printer_id));
+ weak_factory_.GetWeakPtr(), callback_id));
}
void PrintPreviewHandler::HandleGetExtensionPrinterCapabilities(
@@ -1154,12 +1166,18 @@ void PrintPreviewHandler::HandleSignin(const base::ListValue* args) {
}
void PrintPreviewHandler::HandleGetAccessToken(const base::ListValue* args) {
+ std::string callback_id;
std::string type;
- if (!args->GetString(0, &type))
+
+ AllowJavascript();
+ if (!args->GetString(0, &callback_id) || !args->GetString(1, &type)) {
dpapad 2017/06/15 22:20:13 Can this happen other than programmer's error? Sho
rbpotter 2017/06/16 02:19:36 Done.
+ RejectJavascriptCallback(base::Value(callback_id), base::Value());
return;
+ }
+
if (!token_service_)
token_service_ = base::MakeUnique<AccessTokenService>(this);
- token_service_->RequestToken(type);
+ token_service_->RequestToken(type, callback_id);
}
void PrintPreviewHandler::HandleManageCloudPrint(
@@ -1318,11 +1336,21 @@ void PrintPreviewHandler::ClosePreviewDialog() {
print_preview_ui()->OnClosePrintPreviewDialog();
}
-void PrintPreviewHandler::SendAccessToken(const std::string& type,
+void PrintPreviewHandler::SendAccessToken(const std::string& callback_id,
const std::string& access_token) {
VLOG(1) << "Get getAccessToken finished";
- web_ui()->CallJavascriptFunctionUnsafe(
- "onDidGetAccessToken", base::Value(type), base::Value(access_token));
+ base::DictionaryValue response;
+ response.SetBoolean("completed", true);
+ response.SetString("accessToken", access_token);
+ ResolveJavascriptCallback(base::Value(callback_id), response);
+}
+
+void PrintPreviewHandler::SendRequestInProgress(
+ const std::string& callback_id) {
+ base::DictionaryValue response;
+ response.SetBoolean("completed", false);
+ response.SetString("accessToken", "");
+ ResolveJavascriptCallback(base::Value(callback_id), response);
}
void PrintPreviewHandler::SendPrinterCapabilities(
@@ -1783,16 +1811,13 @@ void PrintPreviewHandler::OnGotPrintersForExtension(
}
void PrintPreviewHandler::OnGotExtensionPrinterInfo(
- const std::string& printer_id,
+ const std::string& callback_id,
const base::DictionaryValue& printer_info) {
if (printer_info.empty()) {
- web_ui()->CallJavascriptFunctionUnsafe("failedToResolveProvisionalPrinter",
- base::Value(printer_id));
+ RejectJavascriptCallback(base::Value(callback_id), base::Value());
return;
}
-
- web_ui()->CallJavascriptFunctionUnsafe("onProvisionalPrinterResolved",
- base::Value(printer_id), printer_info);
+ ResolveJavascriptCallback(base::Value(callback_id), printer_info);
}
void PrintPreviewHandler::OnGotExtensionPrinterCapabilities(

Powered by Google App Engine
This is Rietveld 408576698