| Index: chrome/browser/ui/views/webshare/webshare_target_picker_view.h
|
| diff --git a/chrome/browser/ui/views/webshare/webshare_target_picker_view.h b/chrome/browser/ui/views/webshare/webshare_target_picker_view.h
|
| index 324955ebf5d36df8916559983b0abb052a5de22e..b3898a7f602e795f63f3d14484a984f3c469ab77 100644
|
| --- a/chrome/browser/ui/views/webshare/webshare_target_picker_view.h
|
| +++ b/chrome/browser/ui/views/webshare/webshare_target_picker_view.h
|
| @@ -13,8 +13,12 @@
|
| #include "chrome/browser/ui/browser_dialogs.h"
|
| #include "ui/base/models/table_model.h"
|
| #include "ui/base/ui_base_types.h"
|
| +#include "ui/views/controls/table/table_view.h"
|
| +#include "ui/views/controls/table/table_view_observer.h"
|
| #include "ui/views/window/dialog_delegate.h"
|
|
|
| +class GURL;
|
| +
|
| // Dialog that presents the user with a list of share target apps. Allows the
|
| // user to pick one target to be opened and have data passed to it.
|
| //
|
| @@ -22,14 +26,17 @@
|
| // in-development feature (Web Share) behind a runtime flag. It should not be
|
| // used by any released code until going through UI review.
|
| class WebShareTargetPickerView : public views::DialogDelegateView,
|
| + public views::TableViewObserver,
|
| public ui::TableModel {
|
| public:
|
| - // |targets| is a list of app titles that will be shown in a list. Calls
|
| - // |close_callback| with SHARE if an app was chosen, or CANCEL if the dialog
|
| - // was cancelled.
|
| + // |targets| is a list of app title and manifest URL pairs that will be shown
|
| + // in a list. If the user picks a target, this calls |callback| with the
|
| + // manifest URL of the chosen target, or returns null if the user cancelled
|
| + // the share.
|
| WebShareTargetPickerView(
|
| - const std::vector<base::string16>& targets,
|
| - const base::Callback<void(SharePickerResult)>& close_callback);
|
| + const std::vector<std::pair<base::string16, GURL>>& targets,
|
| + const base::Callback<void(base::Optional<std::string>)>&
|
| + close_callback);
|
| ~WebShareTargetPickerView() override;
|
|
|
| // views::View overrides:
|
| @@ -43,6 +50,11 @@ class WebShareTargetPickerView : public views::DialogDelegateView,
|
| bool Cancel() override;
|
| bool Accept() override;
|
| base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
|
| + bool IsDialogButtonEnabled(ui::DialogButton button) const override;
|
| +
|
| + // views::TableViewObserver overrides:
|
| + void OnSelectionChanged() override;
|
| + void OnDoubleClick() override;
|
|
|
| // ui::TableModel overrides:
|
| int RowCount() override;
|
| @@ -50,9 +62,11 @@ class WebShareTargetPickerView : public views::DialogDelegateView,
|
| void SetObserver(ui::TableModelObserver* observer) override;
|
|
|
| private:
|
| - const std::vector<base::string16> targets_;
|
| + views::TableView* table_;
|
| +
|
| + const std::vector<std::pair<base::string16, GURL>> targets_;
|
|
|
| - base::Callback<void(SharePickerResult)> close_callback_;
|
| + base::Callback<void(base::Optional<std::string>)> close_callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WebShareTargetPickerView);
|
| };
|
|
|