chromium/ash/shelf/shelf_test_util.h

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

#ifndef ASH_SHELF_SHELF_TEST_UTIL_H_
#define ASH_SHELF_SHELF_TEST_UTIL_H_

#include <string>

#include "ash/public/cpp/shelf_item.h"

namespace gfx {
class ImageSkia;
}  // namespace gfx

namespace ash {

class ShelfTestUtil {
 public:
  ShelfTestUtil(const ShelfTestUtil&) = delete;
  ShelfTestUtil& operator=(const ShelfTestUtil&) = delete;

  // Adds an application shortcut to the shelf model, with the given identifier
  // and the given shelf item type.
  static ShelfItem AddAppShortcut(const std::string& id, ShelfItemType type);

  // Adds an application shortcut to the shelf model, with the given identifier,
  // the given shelf item type, and the given icon.
  static ShelfItem AddAppShortcutWithIcon(const std::string& id,
                                          ShelfItemType type,
                                          gfx::ImageSkia icon);

  // Adds an web app shortcut to the shelf model, with the given identifier, the
  // given shelf item type, the given icon, and the given badge icon.
  static ShelfItem AddWebAppShortcut(const std::string& id,
                                     bool pinned,
                                     gfx::ImageSkia icon,
                                     gfx::ImageSkia badge_icon);

  // Adds an app that is not pinnable to the shelf model.
  static ShelfItem AddAppNotPinnable(const std::string& id);
};

// Waits for an overview enter animation if |enter|; waits for an overview exit
// animation otherwise.
void WaitForOverviewAnimation(bool enter);

}  // namespace ash

#endif  // ASH_SHELF_SHELF_TEST_UTIL_H_