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; |
+} |