[Copy To Clipboard] Add Copy To Clipboard Stub + sharesheet cleanup
- Adds skeleton code for copy to clipboard.
- Moves share_action code into a share_action folder.
- Renames sharesheet_action_cache to share_action_cache.
- Renames sharesheet_service_delegate to sharesheet_service_delegator
Bug:1244143
Change-Id: Ice83865981066e2073189d33c5ec1579e0feb9c2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3220883
Auto-Submit: Melissa Zhang <[email protected]>
Reviewed-by: Josh Nohle <[email protected]>
Reviewed-by: Tim Sergeant <[email protected]>
Commit-Queue: Melissa Zhang <[email protected]>
Cr-Commit-Position: refs/heads/main@{#931765}
diff --git a/chrome/browser/sharesheet/sharesheet_service_delegator.h b/chrome/browser/sharesheet/sharesheet_service_delegator.h
new file mode 100644
index 0000000..8ee8f063
--- /dev/null
+++ b/chrome/browser/sharesheet/sharesheet_service_delegator.h
@@ -0,0 +1,106 @@
+// Copyright 2020 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_BROWSER_SHARESHEET_SHARESHEET_SERVICE_DELEGATOR_H_
+#define CHROME_BROWSER_SHARESHEET_SHARESHEET_SERVICE_DELEGATOR_H_
+
+#include <memory>
+#include <string>
+
+#include "base/callback.h"
+#include "build/chromeos_buildflags.h"
+#include "chrome/browser/sharesheet/sharesheet_types.h"
+#include "chrome/browser/sharesheet/sharesheet_ui_delegate.h"
+#include "components/services/app_service/public/mojom/types.mojom.h"
+#include "ui/base/accelerators/accelerator.h"
+#include "ui/gfx/native_widget_types.h"
+
+class Profile;
+
+namespace gfx {
+struct VectorIcon;
+} // namespace gfx
+
+namespace ui {
+class Accelerator;
+} // namespace ui
+
+namespace views {
+class View;
+} // namespace views
+
+namespace sharesheet {
+
+class SharesheetService;
+
+// The SharesheetServiceDelegator is the interface through which the business
+// logic in SharesheetService communicates with the UI.
+class SharesheetServiceDelegator {
+ public:
+ SharesheetServiceDelegator(gfx::NativeWindow native_window,
+ SharesheetService* sharesheet_service);
+ ~SharesheetServiceDelegator();
+ SharesheetServiceDelegator(const SharesheetServiceDelegator&) = delete;
+ SharesheetServiceDelegator& operator=(const SharesheetServiceDelegator&) =
+ delete;
+
+ gfx::NativeWindow GetNativeWindow();
+ SharesheetController* GetSharesheetController();
+
+ // TODO(crbug.com/1233830) : Remove after business logic is moved
+ // out of SharesheetHeaderView.
+ Profile* GetProfile();
+
+ SharesheetUiDelegate* GetUiDelegateForTesting();
+
+ // ==========================================================================
+ // ======================== SHARESHEET SERVICE TO UI ========================
+ // ==========================================================================
+
+ // The following are called by the ShareService to communicate with the UI.
+ void ShowBubble(std::vector<TargetInfo> targets,
+ apps::mojom::IntentPtr intent,
+ DeliveredCallback delivered_callback,
+ CloseCallback close_callback);
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+ // Skips the generic Sharesheet bubble and directly displays the
+ // NearbyShare bubble dialog.
+ void ShowNearbyShareBubbleForArc(apps::mojom::IntentPtr intent,
+ DeliveredCallback delivered_callback,
+ CloseCallback close_callback);
+#endif // BUILDFLAG(IS_CHROMEOS_ASH)
+
+ // Invoked immediately after an action has launched in the event that UI
+ // changes need to occur at this point.
+ void OnActionLaunched();
+
+ void CloseBubble(SharesheetResult result);
+
+ // ==========================================================================
+ // ======================== UI TO SHARESHEET SERVICE ========================
+ // ==========================================================================
+ // The following are called by the UI to communicate with the ShareService.
+ void OnBubbleClosed(const std::u16string& active_action);
+ void OnTargetSelected(const std::u16string& target_name,
+ const TargetType type,
+ apps::mojom::IntentPtr intent,
+ views::View* share_action_view);
+ bool OnAcceleratorPressed(const ui::Accelerator& accelerator,
+ const std::u16string& active_action);
+ const gfx::VectorIcon* GetVectorIcon(const std::u16string& display_name);
+
+ private:
+ // Only used for ID purposes. NativeWindow will always outlive the
+ // SharesheetServiceDelegator.
+ gfx::NativeWindow native_window_;
+
+ SharesheetService* sharesheet_service_;
+
+ std::unique_ptr<SharesheetUiDelegate> sharesheet_controller_;
+};
+
+} // namespace sharesheet
+
+#endif // CHROME_BROWSER_SHARESHEET_SHARESHEET_SERVICE_DELEGATOR_H_