• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/printing/cloud_print/cloud_print_url.h"
6 
7 #include "base/command_line.h"
8 #include "base/logging.h"
9 #include "chrome/browser/prefs/pref_service.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/common/chrome_switches.h"
12 #include "chrome/common/pref_names.h"
13 #include "googleurl/src/gurl.h"
14 
15 const char kDefaultCloudPrintServiceURL[] = "https://www.google.com/cloudprint";
16 const char kLearnMoreURL[] =
17     "https://www.google.com/support/cloudprint";
18 const char kTestPageURL[] =
19     "http://www.google.com/landing/cloudprint/enable.html?print=true";
20 
RegisterPreferences()21 void CloudPrintURL::RegisterPreferences() {
22   DCHECK(profile_);
23   PrefService* pref_service = profile_->GetPrefs();
24   if (pref_service->FindPreference(prefs::kCloudPrintServiceURL))
25     return;
26   pref_service->RegisterStringPref(prefs::kCloudPrintServiceURL,
27                                    kDefaultCloudPrintServiceURL);
28 }
29 
30 // Returns the root service URL for the cloud print service.  The default is to
31 // point at the Google Cloud Print service.  This can be overridden by the
32 // command line or by the user preferences.
GetCloudPrintServiceURL()33 GURL CloudPrintURL::GetCloudPrintServiceURL() {
34   DCHECK(profile_);
35   RegisterPreferences();
36 
37   const CommandLine& command_line = *CommandLine::ForCurrentProcess();
38   GURL cloud_print_service_url = GURL(command_line.GetSwitchValueASCII(
39       switches::kCloudPrintServiceURL));
40   if (cloud_print_service_url.is_empty()) {
41     cloud_print_service_url = GURL(
42         profile_->GetPrefs()->GetString(prefs::kCloudPrintServiceURL));
43   }
44   return cloud_print_service_url;
45 }
46 
GetCloudPrintServiceDialogURL()47 GURL CloudPrintURL::GetCloudPrintServiceDialogURL() {
48   GURL cloud_print_service_url = GetCloudPrintServiceURL();
49   std::string path(cloud_print_service_url.path() + "/client/dialog.html");
50   GURL::Replacements replacements;
51   replacements.SetPathStr(path);
52   GURL cloud_print_dialog_url = cloud_print_service_url.ReplaceComponents(
53       replacements);
54   return cloud_print_dialog_url;
55 }
56 
GetCloudPrintServiceManageURL()57 GURL CloudPrintURL::GetCloudPrintServiceManageURL() {
58   GURL cloud_print_service_url = GetCloudPrintServiceURL();
59   std::string path(cloud_print_service_url.path() + "/manage.html");
60   GURL::Replacements replacements;
61   replacements.SetPathStr(path);
62   GURL cloud_print_manage_url = cloud_print_service_url.ReplaceComponents(
63       replacements);
64   return cloud_print_manage_url;
65 }
66 
GetCloudPrintLearnMoreURL()67 GURL CloudPrintURL::GetCloudPrintLearnMoreURL() {
68   GURL cloud_print_learn_more_url(kLearnMoreURL);
69   return cloud_print_learn_more_url;
70 }
71 
GetCloudPrintTestPageURL()72 GURL CloudPrintURL::GetCloudPrintTestPageURL() {
73   GURL cloud_print_learn_more_url(kTestPageURL);
74   return cloud_print_learn_more_url;
75 }
76