chromium/chromeos/ui/frame/multitask_menu/multitask_menu_view_test_api.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_UI_FRAME_MULTITASK_MENU_MULTITASK_MENU_VIEW_TEST_API_H_
#define CHROMEOS_UI_FRAME_MULTITASK_MENU_MULTITASK_MENU_VIEW_TEST_API_H_

#include "base/memory/raw_ptr.h"

namespace chromeos {

class MultitaskButton;
class MultitaskMenuView;
class SplitButtonView;

// Wrapper for MultitaskMenuView that exposes internal state to test
// functions.
class MultitaskMenuViewTestApi {
 public:
  explicit MultitaskMenuViewTestApi(MultitaskMenuView* view);
  MultitaskMenuViewTestApi(const MultitaskMenuViewTestApi&) = delete;
  MultitaskMenuViewTestApi& operator=(const MultitaskMenuViewTestApi&) = delete;
  ~MultitaskMenuViewTestApi();

  SplitButtonView* GetHalfButton();
  MultitaskButton* GetFullButton();
  MultitaskButton* GetFloatButton();

  // The partial button's left/top button normally snaps 2/3 to the left/top,
  // and the right/bottom button normally snaps 1/3 to the right/bottom. The
  // user can use the alt key to toggle to and from reversed state, where the
  // left/top button would snap 1/3 and the right/bottom button would snap 2/3.
  bool GetIsReversed() const;

 private:
  const raw_ptr<MultitaskMenuView> multitask_menu_view_;
};

}  // namespace chromeos

#endif  // CHROMEOS_UI_FRAME_MULTITASK_MENU_MULTITASK_MENU_VIEW_TEST_API_H_