blob: c94a191b1aa51c7f28ece4ad3ec2c2395e6099df [file] [log] [blame]
// Copyright 2021 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_ASH_SHARESHEET_CROS_SHARESHEET_SERVICE_DELEGATE_H_
#define CHROME_BROWSER_ASH_SHARESHEET_CROS_SHARESHEET_SERVICE_DELEGATE_H_
#include "chrome/browser/sharesheet/sharesheet_controller.h"
#include "chrome/browser/sharesheet/sharesheet_service_delegate.h"
#include "chrome/browser/sharesheet/sharesheet_types.h"
#include "components/services/app_service/public/mojom/types.mojom.h"
#include "ui/gfx/native_widget_types.h"
namespace ash {
namespace sharesheet {
class SharesheetBubbleView;
// The Chrome OS only SharesheetServiceDelegate class.
// CrosSharesheetServiceDelegate is the interface through which the business
// logic in the SharesheetService communicates with the UI
// (SharesheetBubbleView).
class CrosSharesheetServiceDelegate
: public ::sharesheet::SharesheetServiceDelegate {
public:
CrosSharesheetServiceDelegate(
gfx::NativeWindow native_window,
::sharesheet::SharesheetService* sharesheet_service);
~CrosSharesheetServiceDelegate() override = default;
CrosSharesheetServiceDelegate(const CrosSharesheetServiceDelegate&) = delete;
CrosSharesheetServiceDelegate& operator=(
const CrosSharesheetServiceDelegate&) = delete;
// ::sharesheet::SharesheetServiceDelegate overrides:
void ShowBubble(std::vector<::sharesheet::TargetInfo> targets,
apps::mojom::IntentPtr intent,
::sharesheet::DeliveredCallback delivered_callback) override;
void ShowNearbyShareBubble(
apps::mojom::IntentPtr intent,
::sharesheet::DeliveredCallback delivered_callback,
::sharesheet::CloseCallback close_callback) override;
void OnActionLaunched() override;
// ::sharesheet::SharesheetController overrides:
void SetSharesheetSize(int width, int height) override;
void CloseSharesheet() override;
private:
bool IsBubbleVisible() const;
// Owned by views.
SharesheetBubbleView* sharesheet_bubble_view_;
};
} // namespace sharesheet
} // namespace ash
#endif // CHROME_BROWSER_ASH_SHARESHEET_CROS_SHARESHEET_SERVICE_DELEGATE_H_