diff options
Diffstat (limited to 'chrome/browser/web_applications/web_app_mac.h')
-rw-r--r-- | chrome/browser/web_applications/web_app_mac.h | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/chrome/browser/web_applications/web_app_mac.h b/chrome/browser/web_applications/web_app_mac.h index e0ba9ab..fed1b1e 100644 --- a/chrome/browser/web_applications/web_app_mac.h +++ b/chrome/browser/web_applications/web_app_mac.h @@ -5,6 +5,8 @@ #ifndef CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_MAC_H_ #define CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_MAC_H_ +#include <vector> + #include "base/files/file_path.h" #include "base/gtest_prod_util.h" #include "base/strings/string16.h" @@ -38,45 +40,63 @@ class WebAppShortcutCreator { WebAppShortcutCreator( const base::FilePath& app_data_path, const ShellIntegration::ShortcutInfo& shortcut_info, - const string16& chrome_bundle_id); + const std::string& chrome_bundle_id); virtual ~WebAppShortcutCreator(); - // Returns a path to the destination where the app should be written to. - base::FilePath GetShortcutPath() const; + // Returns the base name for the shortcut. + base::FilePath GetShortcutName() const; + + // Returns a path to the Chrome Apps folder in the relevant applications + // folder. E.g. ~/Applications or /Applications. + virtual base::FilePath GetDestinationPath() const; - // Copies the app launcher template into place and fills in all relevant - // information. - bool CreateShortcut(); + bool CreateShortcuts(); + void DeleteShortcuts(); + bool UpdateShortcuts(); protected: // Returns a path to the app loader. base::FilePath GetAppLoaderPath() const; - // Returns a path to the destination where the app should be written to. - virtual base::FilePath GetDestinationPath() const; - // Updates the plist inside |app_path| with information about the app. bool UpdatePlist(const base::FilePath& app_path) const; // Updates the icon for the shortcut. bool UpdateIcon(const base::FilePath& app_path) const; + // Returns a path to an app bundle with the given id. Or an empty path if no + // matching bundle was found. + // Protected and virtual so it can be mocked out for testing. + virtual base::FilePath GetAppBundleById(const std::string& bundle_id) const; + private: FRIEND_TEST_ALL_PREFIXES(WebAppShortcutCreatorTest, UpdateIcon); + FRIEND_TEST_ALL_PREFIXES(WebAppShortcutCreatorTest, UpdateShortcuts); + + // Copies the app loader template into a temporary directory and fills in all + // relevant information. + bool BuildShortcut(const base::FilePath& staging_path) const; + + // Builds a shortcut and copies it into the given destination folders. + // Returns with the number of successful copies. Returns on the first failure. + size_t CreateShortcutsIn(const std::vector<base::FilePath>& folders) const; // Updates the InfoPlist.string inside |app_path| with the display name for // the app. bool UpdateDisplayName(const base::FilePath& app_path) const; + // Updates the bundle id of the internal copy of the app shim bundle. + bool UpdateInternalBundleIdentifier() const; + // Returns the bundle identifier to use for this app bundle. - // |plist| is a dictionary containg a copy of the template plist file to - // be used for creating the app bundle. - NSString* GetBundleIdentifier(NSDictionary* plist) const; + std::string GetBundleIdentifier() const; + + // Returns the bundle identifier for the internal copy of the bundle. + std::string GetInternalBundleIdentifier() const; // Show the bundle we just generated in the Finder. - virtual void RevealGeneratedBundleInFinder( - const base::FilePath& generated_bundle) const; + virtual void RevealAppShimInFinder() const; // Path to the data directory for this app. For example: // ~/Library/Application Support/Chromium/Default/Web Applications/_crx_abc/ @@ -86,7 +106,7 @@ class WebAppShortcutCreator { ShellIntegration::ShortcutInfo info_; // The CFBundleIdentifier of the Chrome browser bundle. - string16 chrome_bundle_id_; + std::string chrome_bundle_id_; }; } // namespace web_app |