// Copyright 2015 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 UI_VIEWS_TEST_COMBOBOX_TEST_API_H_
#define UI_VIEWS_TEST_COMBOBOX_TEST_API_H_

#include "base/macros.h"

namespace gfx {
class Size;
}

namespace ui {
class MenuModel;
}

namespace views {
class Combobox;

namespace test {

// A wrapper of Combobox to access private members for testing.
class ComboboxTestApi {
 public:
  explicit ComboboxTestApi(Combobox* combobox) : combobox_(combobox) {}

  // Activates the Combobox menu item at |index|, as if selected by the user.
  void PerformActionAt(int index);

  // Installs a testing views::MenuRunnerHandler to test when a menu should be
  // shown. The test runner will immediately dismiss itself and increment the
  // given |menu_show_count| by one.
  void InstallTestMenuRunner(int* menu_show_count);

  // Accessors for private data members of Combobox.
  gfx::Size content_size();
  ui::MenuModel* menu_model();

 private:
  Combobox* combobox_;

  DISALLOW_COPY_AND_ASSIGN(ComboboxTestApi);
};

}  // namespace test

}  // namespace views

#endif  // UI_VIEWS_TEST_MENU_RUNNER_TEST_API_H_
