summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorscottbyer@google.com <scottbyer@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-29 23:17:30 +0000
committerscottbyer@google.com <scottbyer@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-29 23:17:30 +0000
commit2283eead0fb7740ed50fec1ac84fe6e1007b1540 (patch)
treef7cf3a627e649d5a4206671fecc23179d96025ab
parent3697dc7a46be81c92c32fa8f1400801c699e7b55 (diff)
downloadchromium_src-2283eead0fb7740ed50fec1ac84fe6e1007b1540.zip
chromium_src-2283eead0fb7740ed50fec1ac84fe6e1007b1540.tar.gz
chromium_src-2283eead0fb7740ed50fec1ac84fe6e1007b1540.tar.bz2
Refactor out the cloud print URL management into a separate header/file for future use in a TODO cleanup.
BUG=none TEST=none Review URL: http://codereview.chromium.org/3567002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61006 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/printing/cloud_print/cloud_print_url.cc51
-rw-r--r--chrome/browser/printing/cloud_print/cloud_print_url.h26
-rw-r--r--chrome/browser/printing/print_dialog_cloud.cc47
-rw-r--r--chrome/browser/printing/print_dialog_cloud_internal.h14
-rw-r--r--chrome/browser/printing/print_dialog_cloud_uitest.cc5
-rw-r--r--chrome/browser/printing/print_dialog_cloud_unittest.cc7
-rw-r--r--chrome/chrome_browser.gypi2
7 files changed, 88 insertions, 64 deletions
diff --git a/chrome/browser/printing/cloud_print/cloud_print_url.cc b/chrome/browser/printing/cloud_print/cloud_print_url.cc
new file mode 100644
index 0000000..25a6e2a
--- /dev/null
+++ b/chrome/browser/printing/cloud_print/cloud_print_url.cc
@@ -0,0 +1,51 @@
+// Copyright (c) 2010 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/printing/cloud_print/cloud_print_url.h"
+
+#include "base/command_line.h"
+#include "base/logging.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/profile.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/pref_names.h"
+#include "googleurl/src/gurl.h"
+
+const char kDefaultCloudPrintServiceURL[] = "https://www.google.com/cloudprint";
+
+void CloudPrintURL::RegisterPreferences() {
+ DCHECK(profile_);
+ PrefService* pref_service = profile_->GetPrefs();
+ if (pref_service->FindPreference(prefs::kCloudPrintServiceURL))
+ return;
+ pref_service->RegisterStringPref(prefs::kCloudPrintServiceURL,
+ kDefaultCloudPrintServiceURL);
+}
+
+// Returns the root service URL for the cloud print service. The
+// default is to point at the Google Cloud Print service. This can be
+// overridden by the command line or by the user preferences.
+GURL CloudPrintURL::GetCloudPrintServiceURL() {
+ DCHECK(profile_);
+ RegisterPreferences();
+
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ GURL cloud_print_service_url = GURL(command_line.GetSwitchValueASCII(
+ switches::kCloudPrintServiceURL));
+ if (cloud_print_service_url.is_empty()) {
+ cloud_print_service_url = GURL(
+ profile_->GetPrefs()->GetString(prefs::kCloudPrintServiceURL));
+ }
+ return cloud_print_service_url;
+}
+
+GURL CloudPrintURL::GetCloudPrintServiceDialogURL() {
+ GURL cloud_print_service_url = GetCloudPrintServiceURL();
+ std::string path(cloud_print_service_url.path() + "/client/dialog.html");
+ GURL::Replacements replacements;
+ replacements.SetPathStr(path);
+ GURL cloud_print_dialog_url = cloud_print_service_url.ReplaceComponents(
+ replacements);
+ return cloud_print_dialog_url;
+}
diff --git a/chrome/browser/printing/cloud_print/cloud_print_url.h b/chrome/browser/printing/cloud_print/cloud_print_url.h
new file mode 100644
index 0000000..aa6458f
--- /dev/null
+++ b/chrome/browser/printing/cloud_print/cloud_print_url.h
@@ -0,0 +1,26 @@
+// Copyright (c) 2010 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.
+
+#ifndef CHROME_BROWSER_PRINTING_CLOUD_PRINT_CLOUD_PRINT_URL_H_
+#define CHROME_BROWSER_PRINTING_CLOUD_PRINT_CLOUD_PRINT_URL_H_
+#pragma once
+
+class GURL;
+class Profile;
+
+// Centralize URL management for the cloud print service.
+class CloudPrintURL {
+ public:
+ explicit CloudPrintURL(Profile* profile) : profile_(profile) {}
+
+ GURL GetCloudPrintServiceURL();
+ GURL GetCloudPrintServiceDialogURL();
+
+ private:
+ void RegisterPreferences();
+
+ Profile* profile_;
+};
+
+#endif // CHROME_BROWSER_PRINTING_CLOUD_PRINT_CLOUD_PRINT_URL_H_
diff --git a/chrome/browser/printing/print_dialog_cloud.cc b/chrome/browser/printing/print_dialog_cloud.cc
index a325994..6209038 100644
--- a/chrome/browser/printing/print_dialog_cloud.cc
+++ b/chrome/browser/printing/print_dialog_cloud.cc
@@ -7,10 +7,8 @@
#include "app/l10n_util.h"
#include "base/base64.h"
-#include "base/command_line.h"
#include "base/file_util.h"
#include "base/json/json_reader.h"
-#include "base/logging.h"
#include "base/values.h"
#include "chrome/browser/browser_list.h"
#include "chrome/browser/chrome_thread.h"
@@ -18,16 +16,13 @@
#include "chrome/browser/dom_ui/dom_ui.h"
#include "chrome/browser/dom_ui/dom_ui_util.h"
#include "chrome/browser/dom_ui/html_dialog_ui.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/profile.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_url.h"
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/tab_contents/tab_contents.h"
-#include "chrome/common/chrome_switches.h"
#include "chrome/common/notification_observer.h"
#include "chrome/common/notification_registrar.h"
#include "chrome/common/notification_source.h"
#include "chrome/common/notification_type.h"
-#include "chrome/common/pref_names.h"
#include "chrome/common/render_messages_params.h"
#include "chrome/common/url_constants.h"
#include "webkit/glue/webpreferences.h"
@@ -100,44 +95,6 @@
namespace internal_cloud_print_helpers {
-const char kDefaultCloudPrintServiceURL[] = "https://www.google.com/cloudprint";
-
-void CloudPrintService::RegisterPreferences() {
- DCHECK(profile_);
- PrefService* pref_service = profile_->GetPrefs();
- if (pref_service->FindPreference(prefs::kCloudPrintServiceURL))
- return;
- pref_service->RegisterStringPref(prefs::kCloudPrintServiceURL,
- kDefaultCloudPrintServiceURL);
-}
-
-// Returns the root service URL for the cloud print service. The
-// default is to point at the Google Cloud Print service. This can be
-// overridden by the command line or by the user preferences.
-GURL CloudPrintService::GetCloudPrintServiceURL() {
- DCHECK(profile_);
- RegisterPreferences();
-
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
- GURL cloud_print_service_url = GURL(command_line.GetSwitchValueASCII(
- switches::kCloudPrintServiceURL));
- if (cloud_print_service_url.is_empty()) {
- cloud_print_service_url = GURL(
- profile_->GetPrefs()->GetString(prefs::kCloudPrintServiceURL));
- }
- return cloud_print_service_url;
-}
-
-GURL CloudPrintService::GetCloudPrintServiceDialogURL() {
- GURL cloud_print_service_url = GetCloudPrintServiceURL();
- std::string path(cloud_print_service_url.path() + "/client/dialog.html");
- GURL::Replacements replacements;
- replacements.SetPathStr(path);
- GURL cloud_print_dialog_url = cloud_print_service_url.ReplaceComponents(
- replacements);
- return cloud_print_dialog_url;
-}
-
bool GetRealOrInt(const DictionaryValue& dictionary,
const std::string& path,
double* out_value) {
@@ -304,7 +261,7 @@ void CloudPrintFlowHandler::RegisterMessages() {
NavigationController* controller = &dom_ui_->tab_contents()->controller();
NavigationEntry* pending_entry = controller->pending_entry();
if (pending_entry)
- pending_entry->set_url(CloudPrintService(
+ pending_entry->set_url(CloudPrintURL(
dom_ui_->GetProfile()).GetCloudPrintServiceDialogURL());
registrar_.Add(this, NotificationType::LOAD_STOP,
Source<NavigationController>(controller));
diff --git a/chrome/browser/printing/print_dialog_cloud_internal.h b/chrome/browser/printing/print_dialog_cloud_internal.h
index 7270b29..c40f301 100644
--- a/chrome/browser/printing/print_dialog_cloud_internal.h
+++ b/chrome/browser/printing/print_dialog_cloud_internal.h
@@ -23,20 +23,6 @@ class CloudPrintHtmlDialogDelegateTest;
namespace internal_cloud_print_helpers {
-// Centralize URL management for the cloud print service.
-class CloudPrintService {
- public:
- explicit CloudPrintService(Profile* profile) : profile_(profile) {}
-
- GURL GetCloudPrintServiceURL();
- GURL GetCloudPrintServiceDialogURL();
-
- private:
- void RegisterPreferences();
-
- Profile* profile_;
-};
-
// Small class to virtualize a few functions to aid with unit testing.
class CloudPrintDataSenderHelper {
public:
diff --git a/chrome/browser/printing/print_dialog_cloud_uitest.cc b/chrome/browser/printing/print_dialog_cloud_uitest.cc
index f0ac4f1..4b6dcb0 100644
--- a/chrome/browser/printing/print_dialog_cloud_uitest.cc
+++ b/chrome/browser/printing/print_dialog_cloud_uitest.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/browser_list.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/dom_ui/chrome_url_data_manager.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_url.h"
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/chrome_paths.h"
@@ -157,7 +158,7 @@ class PrintDialogCloudTest : public InProcessBrowserTest {
if (!handler_added_) {
URLRequestFilter* filter = URLRequestFilter::GetInstance();
GURL cloud_print_service_url =
- internal_cloud_print_helpers::CloudPrintService(browser()->profile()).
+ CloudPrintURL(browser()->profile()).
GetCloudPrintServiceURL();
scheme_ = cloud_print_service_url.scheme();
host_name_ = cloud_print_service_url.host();
@@ -166,7 +167,7 @@ class PrintDialogCloudTest : public InProcessBrowserTest {
handler_added_ = true;
GURL cloud_print_dialog_url =
- internal_cloud_print_helpers::CloudPrintService(browser()->profile()).
+ CloudPrintURL(browser()->profile()).
GetCloudPrintServiceDialogURL();
Singleton<TestController>()->set_expected_url(cloud_print_dialog_url);
Singleton<TestController>()->set_delegate(&delegate_);
diff --git a/chrome/browser/printing/print_dialog_cloud_unittest.cc b/chrome/browser/printing/print_dialog_cloud_unittest.cc
index 16f7dab..5cde305 100644
--- a/chrome/browser/printing/print_dialog_cloud_unittest.cc
+++ b/chrome/browser/printing/print_dialog_cloud_unittest.cc
@@ -13,6 +13,7 @@
#include "base/values.h"
#include "base/weak_ptr.h"
#include "chrome/browser/chrome_thread.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_url.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/notification_details.h"
#include "chrome/common/notification_observer.h"
@@ -153,13 +154,13 @@ class CloudPrintURLTest : public testing::Test {
TEST_F(CloudPrintURLTest, CheckDefaultURLs) {
std::string service_url =
- internal_cloud_print_helpers::CloudPrintService(profile_.get()).
+ CloudPrintURL(profile_.get()).
GetCloudPrintServiceURL().spec();
EXPECT_THAT(service_url, HasSubstr("www.google.com"));
EXPECT_THAT(service_url, HasSubstr("cloudprint"));
std::string dialog_url =
- internal_cloud_print_helpers::CloudPrintService(profile_.get()).
+ CloudPrintURL(profile_.get()).
GetCloudPrintServiceDialogURL().spec();
EXPECT_THAT(dialog_url, HasSubstr("www.google.com"));
EXPECT_THAT(dialog_url, HasSubstr("/cloudprint/"));
@@ -169,7 +170,7 @@ TEST_F(CloudPrintURLTest, CheckDefaultURLs) {
// Repeat to make sure there isn't a transient glitch.
dialog_url =
- internal_cloud_print_helpers::CloudPrintService(profile_.get()).
+ CloudPrintURL(profile_.get()).
GetCloudPrintServiceDialogURL().spec();
EXPECT_THAT(dialog_url, HasSubstr("www.google.com"));
EXPECT_THAT(dialog_url, HasSubstr("/cloudprint/"));
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 27753ba..57e64bf 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2331,6 +2331,8 @@
'browser/printing/cloud_print/cloud_print_setup_flow.h',
'browser/printing/cloud_print/cloud_print_setup_message_handler.cc',
'browser/printing/cloud_print/cloud_print_setup_message_handler.h',
+ 'browser/printing/cloud_print/cloud_print_url.cc',
+ 'browser/printing/cloud_print/cloud_print_url.h',
'browser/process_info_snapshot_mac.cc',
'browser/process_info_snapshot.h',
'browser/process_singleton.h',