Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8484)

Unified Diff: chrome/installer/util/shell_registry_util.h

Issue 1578833003: Moved shell_util functions into new shell_registry_util module. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/installer/util/BUILD.gn ('k') | chrome/installer/util/shell_registry_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/shell_registry_util.h
diff --git a/chrome/installer/util/shell_registry_util.h b/chrome/installer/util/shell_registry_util.h
new file mode 100644
index 0000000000000000000000000000000000000000..60d5375322127326954388a5087ec5964351720d
--- /dev/null
+++ b/chrome/installer/util/shell_registry_util.h
@@ -0,0 +1,146 @@
+// Copyright 2016 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_INSTALLER_UTIL_SHELL_REGISTRY_UTIL_H_
+#define CHROME_INSTALLER_UTIL_SHELL_REGISTRY_UTIL_H_
+
+#include "base/files/file_path.h"
+#include "base/memory/scoped_vector.h"
+#include "base/strings/string16.h"
+
+class BrowserDistribution;
+class RegistryEntry;
+
+namespace installer_util {
+
+extern const wchar_t kReinstallCommand[];
+
+// Details about a Windows application, to be entered into the registry for the
+// purpose of file associations.
+struct ApplicationInfo {
+ ApplicationInfo() : file_type_icon_index(0), application_icon_index(0) {}
+
+ // The ProgId used by Windows for file associations with this application.
+ // Must not be empty or start with a '.'.
+ base::string16 prog_id;
+ // The friendly name, and the path of the icon that will be used for files of
+ // these types when associated with this application by default. (They are NOT
+ // the name/icon that will represent the application under the Open With
+ // menu.)
+ base::string16 file_type_name;
+ base::FilePath file_type_icon_path;
+ int file_type_icon_index;
+ // The command to execute when opening a file via this association. It should
+ // contain "%1" (to tell Windows to pass the filename as an argument).
+ // TODO(mgiuca): |command_line| should be a base::CommandLine.
+ base::string16 command_line;
+ // The AppUserModelId used by Windows 8 for this application. Distinct from
+ // |prog_id|.
+ base::string16 app_id;
+
+ // User-visible details about this application. Any of these may be empty.
+ base::string16 application_name;
+ base::FilePath application_icon_path;
+ int application_icon_index;
+ base::string16 application_description;
+ base::string16 publisher_name;
+
+ // The CLSID for the application's DelegateExecute handler. May be empty.
+ base::string16 delegate_clsid;
+};
+
+// Returns the Windows browser client registration key for Chrome. For example:
+// "Software\Clients\StartMenuInternet\Chromium[.user]". Strictly speaking, we
+// should use the name of the executable (e.g., "chrome.exe"), but that ship has
+// sailed. The cost of switching now is re-prompting users to make Chrome their
+// default browser, which isn't polite. |suffix| is the user-specific
+// registration suffix; see GetUserSpecificDefaultBrowserSuffix in shell_util.h
+// for details.
+base::string16 GetBrowserClientKey(BrowserDistribution* dist,
+ const base::string16& suffix);
+
+// Gets the registry entries to register an application in the Windows registry.
+// |app_info| provides all of the information needed.
+void GetProgIdEntries(const ApplicationInfo& app_info,
+ ScopedVector<RegistryEntry>* entries);
+
+// This method returns a list of all the registry entries that are needed to
+// register this installation's ProgId and AppId. These entries need to be
+// registered in HKLM prior to Win8.
+void GetChromeProgIdEntries(BrowserDistribution* dist,
+ const base::FilePath& chrome_exe,
+ const base::string16& suffix,
+ ScopedVector<RegistryEntry>* entries);
+
+// This method returns a list of the registry entries needed to declare a
+// capability of handling a protocol on Windows.
+void GetProtocolCapabilityEntries(BrowserDistribution* dist,
+ const base::string16& suffix,
+ const base::string16& protocol,
+ ScopedVector<RegistryEntry>* entries);
+
+// This method returns a list of the registry entries required to register this
+// installation in "RegisteredApplications" on Windows (to appear in Default
+// Programs, StartMenuInternet, etc.). These entries need to be registered in
+// HKLM prior to Win8. If |suffix| is not empty, these entries are guaranteed to
+// be unique on this machine.
+void GetShellIntegrationEntries(BrowserDistribution* dist,
+ const base::FilePath& chrome_exe,
+ const base::string16& suffix,
+ ScopedVector<RegistryEntry>* entries);
+
+// Gets the registry entries to register an application as a handler for a
+// particular file extension. |prog_id| is the ProgId used by Windows for the
+// application. |ext| is the file extension, which must begin with a '.'.
+void GetAppExtRegistrationEntries(const base::string16& prog_id,
+ const base::string16& ext,
+ ScopedVector<RegistryEntry>* entries);
+
+// This method returns a list of the registry entries required for this
+// installation to be registered in the Windows shell.
+// In particular:
+// - App Paths
+// http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121
+// - File Associations
+// http://msdn.microsoft.com/en-us/library/bb166549
+// These entries need to be registered in HKLM prior to Win8.
+void GetChromeAppRegistrationEntries(const base::FilePath& chrome_exe,
+ const base::string16& suffix,
+ ScopedVector<RegistryEntry>* entries);
+
+// Gets the registry entries to register an application as the default handler
+// for a particular file extension. |prog_id| is the ProgId used by Windows for
+// the application. |ext| is the file extension, which must begin with a '.'. If
+// |overwrite_existing|, always sets the default handler; otherwise only sets if
+// there is no existing default.
+//
+// This has no effect on Windows 8. Windows 8 ignores the default and lets the
+// user choose. If there is only one handler for a file, it will automatically
+// become the default. Otherwise, the first time the user opens a file, they are
+// presented with the dialog to set the default handler. (This is roughly
+// equivalent to being called with |overwrite_existing| false.)
+void GetAppDefaultRegistrationEntries(const base::string16& prog_id,
+ const base::string16& ext,
+ bool overwrite_existing,
+ ScopedVector<RegistryEntry>* entries);
+
+// This method returns a list of all the user level registry entries that are
+// needed to make Chromium the default handler for a protocol on XP.
+void GetXPStyleUserProtocolEntries(const base::string16& protocol,
+ const base::string16& chrome_icon,
+ const base::string16& chrome_open,
+ ScopedVector<RegistryEntry>* entries);
+
+// This method returns a list of all the user level registry entries that are
+// needed to make Chromium default browser on XP. Some of these entries are
+// irrelevant in recent versions of Windows, but we register them anyways as
+// some legacy apps are hardcoded to lookup those values.
+void GetXPStyleDefaultBrowserUserEntries(BrowserDistribution* dist,
+ const base::FilePath& chrome_exe,
+ const base::string16& suffix,
+ ScopedVector<RegistryEntry>* entries);
+
+} // namespace installer_util
+
+#endif // CHROME_INSTALLER_UTIL_SHELL_REGISTRY_UTIL_H_
« no previous file with comments | « chrome/installer/util/BUILD.gn ('k') | chrome/installer/util/shell_registry_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698