Chromium Code Reviews| Index: chrome/browser/web_applications/web_app.h |
| diff --git a/chrome/browser/web_applications/web_app.h b/chrome/browser/web_applications/web_app.h |
| index a7d93fbeea64e1884a80acf54b894747ef0f496c..72f728cb5da60d5eb839ec883c10c5dde7879d36 100644 |
| --- a/chrome/browser/web_applications/web_app.h |
| +++ b/chrome/browser/web_applications/web_app.h |
| @@ -10,6 +10,7 @@ |
| #include "base/callback.h" |
| #include "base/files/file_path.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "base/strings/string16.h" |
| #include "build/build_config.h" |
| #include "chrome/browser/shell_integration.h" |
| @@ -53,6 +54,12 @@ struct ShortcutInfo { |
| base::FilePath profile_path; |
| std::string profile_name; |
| std::string version_for_display; |
| + |
| + private: |
| + // ShortcutInfo must not be copied; generally it is passed around via |
| + // scoped_ptrs. This is to allow passing ShortcutInfos between threads, |
| + // despite ImageFamily having a non-thread-safe reference count. |
|
msw
2015/04/01 16:23:00
Hmm, tough spot, but I suppose a thread-safe gfx::
Matt Giuca
2015/04/01 22:52:17
https://groups.google.com/a/chromium.org/d/msg/chr
|
| + DISALLOW_COPY_AND_ASSIGN(ShortcutInfo); |
| }; |
| // This specifies a folder in the system applications menu (e.g the Start Menu |
| @@ -98,16 +105,16 @@ enum ShortcutCreationReason { |
| }; |
| // Called by GetInfoForApp after fetching the ShortcutInfo and FileHandlersInfo. |
| -typedef base::Callback<void(const ShortcutInfo&, |
| +typedef base::Callback<void(scoped_ptr<ShortcutInfo>, |
| const extensions::FileHandlersInfo&)> InfoCallback; |
| // Called by GetShortcutInfoForApp after fetching the ShortcutInfo. |
| -typedef base::Callback<void(const ShortcutInfo&)> ShortcutInfoCallback; |
| +typedef base::Callback<void(scoped_ptr<ShortcutInfo>)> ShortcutInfoCallback; |
| #if defined(TOOLKIT_VIEWS) |
| // Extracts shortcut info of the given WebContents. |
| -void GetShortcutInfoForTab(content::WebContents* web_contents, |
| - ShortcutInfo* info); |
| +scoped_ptr<ShortcutInfo> GetShortcutInfoForTab( |
| + content::WebContents* web_contents); |
| #endif |
| // Updates web app shortcut of the WebContents. This function checks and |
| @@ -117,7 +124,7 @@ void GetShortcutInfoForTab(content::WebContents* web_contents, |
| // updates (recreates) them if they exits. |
| void UpdateShortcutForTabContents(content::WebContents* web_contents); |
| -ShortcutInfo ShortcutInfoForExtensionAndProfile( |
| +scoped_ptr<ShortcutInfo> ShortcutInfoForExtensionAndProfile( |
| const extensions::Extension* app, |
| Profile* profile); |
| @@ -173,13 +180,13 @@ std::string GetExtensionIdFromApplicationName(const std::string& app_name); |
| void CreateShortcutsWithInfo( |
| ShortcutCreationReason reason, |
| const ShortcutLocations& locations, |
| - const ShortcutInfo& shortcut_info, |
| + scoped_ptr<ShortcutInfo> shortcut_info, |
| const extensions::FileHandlersInfo& file_handlers_info); |
| // Currently only called by app_list_service_mac to create a shim for the |
| // app launcher. |
| void CreateNonAppShortcut(const ShortcutLocations& locations, |
| - const ShortcutInfo& shortcut_info); |
| + scoped_ptr<ShortcutInfo> shortcut_info); |
| // Creates shortcuts for an app. This loads the app's icon from disk, and calls |
| // CreateShortcutsWithInfo(). If you already have a ShortcutInfo with the app's |
| @@ -239,7 +246,7 @@ std::vector<base::FilePath> GetShortcutPaths( |
| // |creation_locations| contains information about where to create them. |
| bool CreatePlatformShortcuts( |
| const base::FilePath& shortcut_data_path, |
| - const ShortcutInfo& shortcut_info, |
| + scoped_ptr<ShortcutInfo> shortcut_info, |
| const extensions::FileHandlersInfo& file_handlers_info, |
| const ShortcutLocations& creation_locations, |
| ShortcutCreationReason creation_reason); |
| @@ -248,7 +255,7 @@ bool CreatePlatformShortcuts( |
| // platform specific implementation of the DeleteAllShortcuts function, and |
| // is executed on the FILE thread. |
| void DeletePlatformShortcuts(const base::FilePath& shortcut_data_path, |
| - const ShortcutInfo& shortcut_info); |
| + scoped_ptr<ShortcutInfo> shortcut_info); |
| // Updates all the shortcuts we have added for this extension. This is the |
| // platform specific implementation of the UpdateAllShortcuts function, and |
| @@ -256,7 +263,7 @@ void DeletePlatformShortcuts(const base::FilePath& shortcut_data_path, |
| void UpdatePlatformShortcuts( |
| const base::FilePath& shortcut_data_path, |
| const base::string16& old_app_title, |
| - const ShortcutInfo& shortcut_info, |
| + scoped_ptr<ShortcutInfo> shortcut_info, |
| const extensions::FileHandlersInfo& file_handlers_info); |
| // Delete all the shortcuts for an entire profile. |