blob: 84d399278c14c2e22704b29b7e1abadd3ee9393e [file] [log] [blame]
// Copyright 2018 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_ARC_INTENT_HELPER_START_SMART_SELECTION_ACTION_MENU_H_
#define CHROME_BROWSER_ASH_ARC_INTENT_HELPER_START_SMART_SELECTION_ACTION_MENU_H_
#include <memory>
#include <vector>
#include "components/arc/mojom/intent_helper.mojom.h"
#include "components/renderer_context_menu/render_view_context_menu_observer.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
class RenderViewContextMenuProxy;
namespace arc {
// An observer class which populates the menu item that shows an action
// obtained from a text selection.
class StartSmartSelectionActionMenu : public RenderViewContextMenuObserver {
public:
explicit StartSmartSelectionActionMenu(RenderViewContextMenuProxy* proxy);
StartSmartSelectionActionMenu(const StartSmartSelectionActionMenu&) = delete;
StartSmartSelectionActionMenu& operator=(
const StartSmartSelectionActionMenu&) = delete;
~StartSmartSelectionActionMenu() override;
// RenderViewContextMenuObserver overrides:
void InitMenu(const content::ContextMenuParams& params) override;
bool IsCommandIdSupported(int command_id) override;
bool IsCommandIdChecked(int command_id) override;
bool IsCommandIdEnabled(int command_id) override;
void ExecuteCommand(int command_id) override;
private:
void HandleTextSelectionActions(
std::vector<mojom::TextSelectionActionPtr> actions);
void UpdateMenuIcon(int command_id, mojom::ActivityIconPtr icon);
void SetMenuIcon(int command_id, const gfx::ImageSkia& image);
RenderViewContextMenuProxy* const proxy_; // Owned by RenderViewContextMenu.
// The text selection actions passed from ARC.
std::vector<mojom::TextSelectionActionPtr> actions_;
base::WeakPtrFactory<StartSmartSelectionActionMenu> weak_ptr_factory_{this};
};
} // namespace arc
#endif // CHROME_BROWSER_ASH_ARC_INTENT_HELPER_START_SMART_SELECTION_ACTION_MENU_H_