diff options
author | scottbyer@google.com <scottbyer@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 23:17:30 +0000 |
---|---|---|
committer | scottbyer@google.com <scottbyer@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 23:17:30 +0000 |
commit | 2283eead0fb7740ed50fec1ac84fe6e1007b1540 (patch) | |
tree | f7cf3a627e649d5a4206671fecc23179d96025ab | |
parent | 3697dc7a46be81c92c32fa8f1400801c699e7b55 (diff) | |
download | chromium_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.cc | 51 | ||||
-rw-r--r-- | chrome/browser/printing/cloud_print/cloud_print_url.h | 26 | ||||
-rw-r--r-- | chrome/browser/printing/print_dialog_cloud.cc | 47 | ||||
-rw-r--r-- | chrome/browser/printing/print_dialog_cloud_internal.h | 14 | ||||
-rw-r--r-- | chrome/browser/printing/print_dialog_cloud_uitest.cc | 5 | ||||
-rw-r--r-- | chrome/browser/printing/print_dialog_cloud_unittest.cc | 7 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 2 |
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', |