Index: chrome/browser/ui/views/create_application_shortcut_view.h |
diff --git a/chrome/browser/ui/views/create_application_shortcut_view.h b/chrome/browser/ui/views/create_application_shortcut_view.h |
index 07d45c12167426baff53c24602f1be7c7305e0d6..72095a2a551de1b964910e60638b0d1053ef52ba 100644 |
--- a/chrome/browser/ui/views/create_application_shortcut_view.h |
+++ b/chrome/browser/ui/views/create_application_shortcut_view.h |
@@ -6,22 +6,16 @@ |
#define CHROME_BROWSER_UI_VIEWS_CREATE_APPLICATION_SHORTCUT_VIEW_H_ |
#include <memory> |
-#include <string> |
-#include <vector> |
-#include "base/compiler_specific.h" |
+#include "base/callback.h" |
#include "base/macros.h" |
+#include "base/memory/weak_ptr.h" |
+#include "base/strings/string16.h" |
#include "chrome/browser/web_applications/web_app.h" |
#include "ui/views/controls/button/button.h" |
#include "ui/views/window/dialog_delegate.h" |
-class GURL; |
class Profile; |
-class SkBitmap; |
- |
-namespace content { |
-class WebContents; |
-} |
namespace extensions { |
class Extension; |
@@ -32,119 +26,54 @@ class Checkbox; |
class Label; |
} |
-// CreateShortcutViewCommon implements a dialog that asks user where to create |
-// the shortcut for given web app. There are two variants of this dialog: |
-// Shortcuts that load a URL in an app-like window, and shortcuts that load |
-// a chrome app (the kind you see under "apps" on the new tabs page) in an app |
-// window. These are implemented as subclasses of CreateShortcutViewCommon. |
-class CreateApplicationShortcutView : public views::DialogDelegateView, |
- public views::ButtonListener { |
+// A dialog allowing the user to create a desktop shortcut pointing to Chrome |
+// app. |
+class CreateChromeApplicationShortcutView : public views::DialogDelegateView, |
+ public views::ButtonListener { |
public: |
- enum DialogLayout { |
- // URL shortcuts have an info frame at the top with a thumbnail, title and |
- // description. |
- DIALOG_LAYOUT_URL_SHORTCUT, |
- |
- // App shortcuts don't have an info frame, since they are launched from |
- // places where it's clear what app they are from. |
- DIALOG_LAYOUT_APP_SHORTCUT |
- }; |
- |
- explicit CreateApplicationShortcutView(Profile* profile); |
- ~CreateApplicationShortcutView() override; |
+ CreateChromeApplicationShortcutView( |
+ Profile* profile, |
+ const extensions::Extension* app, |
+ const base::Callback<void(bool)>& close_callback); |
+ ~CreateChromeApplicationShortcutView() override; |
// Initialize the controls on the dialog. |
- void InitControls(DialogLayout dialog_layout); |
+ void InitControls(); |
- // Overridden from views::View: |
+ // DialogDelegateView: |
gfx::Size GetPreferredSize() const override; |
- |
- // Overridden from views::DialogDelegate: |
base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; |
bool IsDialogButtonEnabled(ui::DialogButton button) const override; |
ui::ModalType GetModalType() const override; |
base::string16 GetWindowTitle() const override; |
bool Accept() override; |
+ bool Cancel() override; |
- // Overridden from views::ButtonListener: |
+ // ButtonListener: |
void ButtonPressed(views::Button* sender, const ui::Event& event) override; |
- protected: |
+ private: |
// Adds a new check-box as a child to the view. |
views::Checkbox* AddCheckbox(const base::string16& text, bool checked); |
+ // Called when the app's ShortcutInfo (with icon) is loaded. |
+ void OnAppInfoLoaded(std::unique_ptr<web_app::ShortcutInfo> shortcut_info); |
+ |
// Profile in which the shortcuts will be created. |
Profile* profile_; |
+ base::Callback<void(bool)> close_callback_; |
+ |
// UI elements on the dialog. |
- // May be NULL if we are not displaying the app's info. |
- views::View* app_info_; |
views::Label* create_shortcuts_label_; |
+ |
+ // May be null if the platform doesn't support a particular location. |
views::Checkbox* desktop_check_box_; |
views::Checkbox* menu_check_box_; |
views::Checkbox* quick_launch_check_box_; |
// Target shortcut and file handler info. |
std::unique_ptr<web_app::ShortcutInfo> shortcut_info_; |
- // If false, the shortcut will be created in the root level of the Start Menu. |
- bool create_in_chrome_apps_subdir_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CreateApplicationShortcutView); |
-}; |
- |
-// Create an application shortcut pointing to a URL. |
-class CreateUrlApplicationShortcutView : public CreateApplicationShortcutView { |
- public: |
- explicit CreateUrlApplicationShortcutView(content::WebContents* web_contents); |
- ~CreateUrlApplicationShortcutView() override; |
- |
- bool Accept() override; |
- |
- private: |
- // Fetch the largest unprocessed icon. |
- // The first largest icon downloaded and decoded successfully will be used. |
- void FetchIcon(); |
- |
- // Favicon download callback. |
- void DidDownloadFavicon( |
- int requested_size, |
- int id, |
- int http_status_code, |
- const GURL& image_url, |
- const std::vector<SkBitmap>& bitmaps, |
- const std::vector<gfx::Size>& original_bitmap_sizes); |
- |
- // The tab whose URL is being turned into an app. |
- content::WebContents* web_contents_; |
- |
- // Pending app icon download tracked by us. |
- int pending_download_id_; |
- |
- // Unprocessed icons from the WebApplicationInfo passed in. |
- web_app::IconInfoList unprocessed_icons_; |
- |
- base::WeakPtrFactory<CreateUrlApplicationShortcutView> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CreateUrlApplicationShortcutView); |
-}; |
- |
-// Create an application shortcut pointing to a chrome application. |
-class CreateChromeApplicationShortcutView |
- : public CreateApplicationShortcutView { |
- public: |
- CreateChromeApplicationShortcutView( |
- Profile* profile, |
- const extensions::Extension* app, |
- const base::Callback<void(bool)>& close_callback); |
- ~CreateChromeApplicationShortcutView() override; |
- bool Accept() override; |
- bool Cancel() override; |
- |
- private: |
- // Called when the app's ShortcutInfo (with icon) is loaded. |
- void OnAppInfoLoaded(std::unique_ptr<web_app::ShortcutInfo> shortcut_info); |
- |
- base::Callback<void(bool)> close_callback_; |
base::WeakPtrFactory<CreateChromeApplicationShortcutView> weak_ptr_factory_; |