blob: 5bcf7125e68f135543828cec897d4e5e35260f0a [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.
#include "chrome/browser/ui/views/media_router/app_menu_test_api.h"
#include "base/macros.h"
#include "build/build_config.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/app_menu.h"
#include "chrome/browser/ui/views/toolbar/browser_app_menu_button.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
namespace {
class AppMenuTestApiViews : public test::AppMenuTestApi {
public:
explicit AppMenuTestApiViews(Browser* browser);
~AppMenuTestApiViews() override;
// AppMenuTestApi:
bool IsMenuShowing() override;
void ShowMenu() override;
void ExecuteCommand(int command) override;
private:
BrowserAppMenuButton* GetAppMenuButton();
AppMenu* GetAppMenu();
Browser* browser_;
DISALLOW_COPY_AND_ASSIGN(AppMenuTestApiViews);
};
AppMenuTestApiViews::AppMenuTestApiViews(Browser* browser)
: browser_(browser) {}
AppMenuTestApiViews::~AppMenuTestApiViews() {}
bool AppMenuTestApiViews::IsMenuShowing() {
return GetAppMenuButton()->IsMenuShowing();
}
void AppMenuTestApiViews::ShowMenu() {
GetAppMenuButton()->ShowMenu(views::MenuRunner::NO_FLAGS);
}
void AppMenuTestApiViews::ExecuteCommand(int command) {
// TODO(ellyjones): This doesn't behave properly for nested menus.
GetAppMenu()->ExecuteCommand(command, 0);
}
BrowserAppMenuButton* AppMenuTestApiViews::GetAppMenuButton() {
return BrowserView::GetBrowserViewForBrowser(browser_)
->toolbar()
->app_menu_button();
}
AppMenu* AppMenuTestApiViews::GetAppMenu() {
return GetAppMenuButton()->app_menu();
}
} // namespace
namespace test {
std::unique_ptr<AppMenuTestApi> AppMenuTestApi::Create(Browser* browser) {
return std::make_unique<AppMenuTestApiViews>(browser);
}
} // namespace test