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

Unified Diff: chrome/browser/extensions/extension_chrome_auth_private_api.cc

Issue 7253001: Added a private chromeAuthPrivate API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed unittest failure Created 9 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/extensions/extension_chrome_auth_private_api.cc
diff --git a/chrome/browser/extensions/extension_chrome_auth_private_api.cc b/chrome/browser/extensions/extension_chrome_auth_private_api.cc
new file mode 100644
index 0000000000000000000000000000000000000000..79bae391711515e3fd52e013f83a8bd0c766930a
--- /dev/null
+++ b/chrome/browser/extensions/extension_chrome_auth_private_api.cc
@@ -0,0 +1,66 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/extension_chrome_auth_private_api.h"
+
+#include <string>
+#include "base/values.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
+
+namespace {
+
+bool IsCloudPrintEnableURL(Profile* profile, const GURL& url) {
+ ExtensionService* service = profile->GetExtensionService();
+ const Extension* cloud_print_app = service->GetExtensionById(
+ extension_misc::kCloudPrintAppId, false);
+ if (!cloud_print_app) {
+ NOTREACHED();
+ return false;
+ }
+ return (service->GetExtensionByWebExtent(url) == cloud_print_app);
+}
+
+bool test_mode = false;
+
+const char kAccessDeniedError[] =
+ "Cannot call this API from a non-cloudprint URL.";
+} // namespace
+
+SetCloudPrintCredentialsFunction::SetCloudPrintCredentialsFunction() {
+}
+
+SetCloudPrintCredentialsFunction::~SetCloudPrintCredentialsFunction() {
+}
+
+bool SetCloudPrintCredentialsFunction::RunImpl() {
+ // This has to be called from the specific cloud print app.
+ if (!IsCloudPrintEnableURL(profile_, source_url())) {
+ error_ = kAccessDeniedError;
+ return false;
+ }
+
+ std::string user_email;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &user_email));
+ std::string robot_email;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &robot_email));
+ std::string credentials;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &credentials));
+ if (test_mode) {
+ std::string test_response = user_email;
+ test_response.append(robot_email);
+ test_response.append(credentials);
+ result_.reset(Value::CreateStringValue(test_response));
+ } else {
+ profile_->GetCloudPrintProxyService()->EnableForUserWithRobot(
+ credentials, robot_email, user_email);
+ }
+ SendResponse(true);
+ return true;
+}
+
+// static
+void SetCloudPrintCredentialsFunction::SetTestMode(bool test_mode_enabled) {
+ test_mode = test_mode_enabled;
+}

Powered by Google App Engine
This is Rietveld 408576698