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 <stdlib.h>
6
7#include "chrome/common/url_constants.h"
8#include "googleurl/src/url_util.h"
9
10namespace chrome {
11
12#if defined(OS_CHROMEOS)
13const char kCrosScheme[] = "cros";
14#endif
15
16const char* kSavableSchemes[] = {
17  kHttpScheme,
18  kHttpsScheme,
19  kFileScheme,
20  kFtpScheme,
21  kExtensionScheme,
22  kChromeDevToolsScheme,
23  kChromeUIScheme,
24  NULL
25};
26
27const char kAboutAboutURL[] = "about:about";
28const char kAboutAppCacheInternalsURL[] = "about:appcache-internals";
29const char kAboutCacheURL[] = "about:cache";
30const char kAboutConflicts[] = "about:conflicts";
31const char kAboutKillURL[] = "about:kill";
32const char kAboutCreditsURL[] = "about:credits";
33const char kAboutDNSURL[] = "about:dns";
34const char kAboutFlagsURL[] = "about:flags";
35const char kAboutGpuURL[] = "about:gpu";
36const char kAboutGpuCrashURL[] = "about:gpucrash";
37const char kAboutGpuHangURL[] = "about:gpuhang";
38const char kAboutHangURL[] = "about:hang";
39const char kAboutHistogramsURL[] = "about:histograms";
40const char kAboutMemoryURL[] = "about:memory";
41const char kAboutNetInternalsURL[] = "about:net-internals";
42const char kAboutPluginsURL[] = "about:plugins";
43const char kAboutShorthangURL[] = "about:shorthang";
44const char kAboutSyncURL[] = "about:sync";
45const char kAboutSyncInternalsURL[] = "about:sync-internals";
46const char kAboutTermsURL[] = "about:terms";
47const char kAboutVersionURL[] = "about:version";
48
49// Use an obfuscated URL to make this nondiscoverable, we only want this
50// to be used for testing.
51const char kAboutBrowserCrash[] = "about:inducebrowsercrashforrealz";
52
53const char kChromeUIAboutAboutURL[] = "chrome://about/about";
54const char kChromeUIAboutCreditsURL[] = "chrome://about/credits";
55const char kChromeUIAboutURL[] = "chrome://settings/about";
56const char kChromeUIAppLauncherURL[] = "chrome://newtab/#mode=app-launcher";
57const char kChromeUIBookmarksURL[] = "chrome://bookmarks/";
58const char kChromeUIBugReportURL[] = "chrome://bugreport/";
59const char kChromeUIConflictsURL[] = "chrome://conflicts/";
60const char kChromeUIConstrainedHTMLTestURL[] = "chrome://constrained-test/";
61const char kChromeUICrashesURL[] = "chrome://crashes/";
62const char kChromeUIDevToolsURL[] = "chrome-devtools://devtools/";
63const char kChromeUIDownloadsURL[] = "chrome://downloads/";
64const char kChromeUIExtensionIconURL[] = "chrome://extension-icon/";
65const char kChromeUIExtensionsURL[] = "chrome://extensions/";
66const char kChromeUIFaviconURL[] = "chrome://favicon/";
67const char kChromeUIFlagsURL[] = "chrome://flags/";
68const char kChromeUIHistory2URL[] = "chrome://history2/";
69const char kChromeUIHistoryURL[] = "chrome://history/";
70const char kChromeUIIPCURL[] = "chrome://about/ipc";
71const char kChromeUIKeyboardURL[] = "chrome://keyboard/";
72const char kChromeUINewTabURL[] = "chrome://newtab";
73const char kChromeUIPluginsURL[] = "chrome://plugins/";
74const char kChromeUIPrintURL[] = "chrome://print/";
75const char kChromeUISettingsURL[] = "chrome://settings/";
76const char kChromeUITextfieldsURL[] = "chrome://textfields/";
77
78#if defined(OS_CHROMEOS)
79const char kChromeUIAboutOSCreditsURL[] = "chrome://about/os-credits";
80const char kChromeUIActivationMessage[] = "chrome://activationmessage/";
81const char kChromeUIFileBrowseURL[] = "chrome://filebrowse/";
82const char kChromeUIActiveDownloadsURL[] = "chrome://active-downloads/";
83const char kChromeUIChooseMobileNetworkURL[] =
84    "chrome://choose-mobile-network/";
85const char kChromeUICollectedCookiesURL[] = "chrome://collected-cookies/";
86const char kChromeUIHttpAuthURL[] = "chrome://http-auth/";
87const char kChromeUIImageBurnerURL[] = "chrome://imageburner/";
88const char kChromeUIKeyboardOverlayURL[] = "chrome://keyboardoverlay/";
89const char kChromeUIMediaplayerURL[] = "chrome://mediaplayer/";
90const char kChromeUIMobileSetupURL[] = "chrome://mobilesetup/";
91const char kChromeUIProxySettingsURL[] = "chrome://proxy-settings/";
92const char kChromeUIRegisterPageURL[] = "chrome://register/";
93const char kChromeUISlideshowURL[] = "chrome://slideshow/";
94const char kChromeUISimUnlockURL[] = "chrome://sim-unlock/";
95const char kChromeUISystemInfoURL[] = "chrome://system/";
96const char kChromeUIUserImageURL[] = "chrome://userimage/";
97const char kChromeUIEnterpriseEnrollmentURL[] =
98    "chrome://enterprise-enrollment/";
99#endif
100
101// Keep this list sorted please.
102const char kChromeUIBookmarksHost[] = "bookmarks";
103const char kChromeUIBugReportHost[] = "bugreport";
104const char kChromeUIConflictsHost[] = "conflicts";
105const char kChromeUICrashesHost[] = "crashes";
106const char kChromeUIDevToolsHost[] = "devtools";
107const char kChromeUIDialogHost[] = "dialog";
108const char kChromeUIDownloadsHost[] = "downloads";
109const char kChromeUIExtensionIconHost[] = "extension-icon";
110const char kChromeUIExtensionsHost[] = "extensions";
111const char kChromeUIFaviconHost[] = "favicon";
112const char kChromeUIFlagsHost[] = "flags";
113const char kChromeUIGpuInternalsHost[] = "gpu-internals";
114const char kChromeUIHistoryHost[] = "history";
115const char kChromeUIHistory2Host[] = "history2";
116const char kChromeUIInspectorHost[] = "inspector";
117const char kChromeUIKeyboardHost[] = "keyboard";
118const char kChromeUINetInternalsHost[] = "net-internals";
119const char kChromeUINewTabHost[] = "newtab";
120const char kChromeUIPluginsHost[] = "plugins";
121const char kChromeUIPrintHost[] = "print";
122const char kChromeUIRemotingHost[] = "remoting";
123const char kChromeUIRemotingResourcesHost[] = "remotingresources";
124const char kChromeUIResourcesHost[] = "resources";
125const char kChromeUIScreenshotPath[] = "screenshots";
126const char kChromeUISettingsHost[] = "settings";
127const char kChromeUISyncInternalsHost[] = "sync-internals";
128const char kChromeUISyncResourcesHost[] = "syncresources";
129const char kChromeUITextfieldsHost[] = "textfields";
130const char kChromeUIThemePath[] = "theme";
131const char kChromeUIThumbnailPath[] = "thumb";
132
133#if defined(OS_CHROMEOS)
134const char kChromeUIActiveDownloadsHost[] = "active-downloads";
135const char kChromeUIActivationMessageHost[] = "activationmessage";
136const char kChromeUIChooseMobileNetworkHost[] = "choose-mobile-network";
137const char kChromeUICollectedCookiesHost[] = "collected-cookies";
138const char kChromeUIHttpAuthHost[] = "http-auth";
139const char kChromeUIImageBurnerHost[] = "imageburner";
140const char kChromeUIKeyboardOverlayHost[] = "keyboardoverlay";
141const char kChromeUIMediaplayerHost[] = "mediaplayer";
142const char kChromeUIMobileSetupHost[] = "mobilesetup";
143const char kChromeUIProxySettingsHost[] = "proxy-settings";
144const char kChromeUIRegisterPageHost[] = "register";
145const char kChromeUISlideshowHost[] = "slideshow";
146const char kChromeUISimUnlockHost[] = "sim-unlock";
147const char kChromeUISystemInfoHost[] = "system";
148const char kChromeUIMenu[] = "menu";
149const char kChromeUIWrenchMenu[] = "wrench-menu";
150const char kChromeUINetworkMenu[] = "network-menu";
151const char kChromeUIUserImageHost[] = "userimage";
152const char kChromeUIEnterpriseEnrollmentHost[] = "enterprise-enrollment";
153#endif
154
155#if defined(OS_CHROMEOS) && defined(TOUCH_UI)
156const char kChromeUILoginContainerHost[] = "login-container";
157const char kChromeUILoginHost[] = "login";
158#endif
159
160const char kAppCacheViewInternalsURL[] = "chrome://appcache-internals/";
161
162const char kBlobViewInternalsURL[] = "chrome://blob-internals/";
163
164const char kCloudPrintResourcesURL[] = "chrome://cloudprintresources/";
165const char kCloudPrintResourcesHost[] = "cloudprintresources";
166const char kCloudPrintSetupHost[] = "cloudprintsetup";
167
168const char kNetworkViewInternalsURL[] = "chrome://net-internals/";
169const char kNetworkViewCacheURL[] = "chrome://view-http-cache/";
170
171const char kSyncViewInternalsURL[] = "chrome://sync-internals/";
172
173// GPU sub pages
174const char kGpuInternalsURL[] = "chrome://gpu-internals/";
175
176// Option sub pages.
177const char kAdvancedOptionsSubPage[] =  "advanced";
178const char kAutofillSubPage[] = "autofill";
179const char kBrowserOptionsSubPage[] =  "browser";
180const char kClearBrowserDataSubPage[] = "clearBrowserData";
181const char kContentSettingsSubPage[] = "content";
182const char kContentSettingsExceptionsSubPage[] = "contentExceptions";
183const char kDefaultOptionsSubPage[] =  "";
184const char kImportDataSubPage[] = "importData";
185const char kInstantConfirmPage[] = "instantConfirm";
186const char kLanguageOptionsSubPage[] = "languages";
187const char kPersonalOptionsSubPage[] =  "personal";
188const char kPasswordManagerSubPage[] =  "passwords";
189const char kSearchEnginesSubPage[] = "searchEngines";
190const char kSyncSetupSubPage[] = "syncSetup";
191#if defined(OS_CHROMEOS)
192const char kInternetOptionsSubPage[] = "internet";
193const char kSystemOptionsSubPage[] = "system";
194#endif
195
196const char kPasswordManagerLearnMoreURL[] =
197#if defined(OS_CHROMEOS)
198    "https://www.google.com/support/chromeos/bin/answer.py?answer=95606";
199#else
200    "https://www.google.com/support/chrome/bin/answer.py?answer=95606";
201#endif
202
203const char kChromeHelpURL[] =
204#if defined(OS_CHROMEOS)
205  "https://www.google.com/support/chromeos/";
206#else
207  "https://www.google.com/support/chrome/";
208#endif
209
210  const char kPageInfoHelpCenterURL[] =
211#if defined(OS_CHROMEOS)
212    "https://www.google.com/support/chromeos/bin/answer.py?answer=95617";
213#else
214    "https://www.google.com/support/chrome/bin/answer.py?answer=95617";
215#endif
216
217const char kCrashReasonURL[] =
218#if defined(OS_CHROMEOS)
219    "https://www.google.com/support/chromeos/bin/answer.py?answer=1047340";
220#else
221    "https://www.google.com/support/chrome/bin/answer.py?answer=95669";
222#endif
223
224// TODO: These are currently placeholders that point to the crash
225// docs.  See bug http://crosbug.com/10711
226const char kKillReasonURL[] =
227#if defined(OS_CHROMEOS)
228    "https://www.google.com/support/chromeos/bin/answer.py?answer=1047340";
229#else
230    "https://www.google.com/support/chrome/bin/answer.py?answer=95669";
231#endif
232
233const char kPrivacyLearnMoreURL[] =
234#if defined(OS_CHROMEOS)
235    "https://www.google.com/support/chromeos/bin/answer.py?answer=1047334";
236#else
237    "https://www.google.com/support/chrome/bin/answer.py?answer=114836";
238#endif
239
240const char kChromiumProjectURL[] = "http://code.google.com/chromium/";
241
242const char kLearnMoreReportingURL[] =
243    "https://www.google.com/support/chrome/bin/answer.py?answer=96817";
244
245const char kOutdatedPluginLearnMoreURL[] =
246    "https://www.google.com/support/chrome/bin/answer.py?answer=1181003";
247
248const char kBlockedPluginLearnMoreURL[] =
249    "https://www.google.com/support/chrome/bin/answer.py?answer=1247383";
250
251void RegisterChromeSchemes() {
252  // Don't need "chrome-internal" which was used in old versions of Chrome for
253  // the new tab page.
254  url_util::AddStandardScheme(kChromeDevToolsScheme);
255  url_util::AddStandardScheme(kChromeUIScheme);
256  url_util::AddStandardScheme(kExtensionScheme);
257  url_util::AddStandardScheme(kMetadataScheme);
258#if defined(OS_CHROMEOS)
259  url_util::AddStandardScheme(kCrosScheme);
260#endif
261
262  // Prevent future modification of the standard schemes list. This is to
263  // prevent accidental creation of data races in the program. AddStandardScheme
264  // isn't threadsafe so must be called when GURL isn't used on any other
265  // thread. This is really easy to mess up, so we say that all calls to
266  // AddStandardScheme in Chrome must be inside this function.
267  url_util::LockStandardSchemes();
268}
269
270}  // namespace chrome
271