blob: 06949e01c3a77624430df8b933589f67cdeeacc1 [file] [log] [blame]
// Copyright 2013 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 "ash/app_list/test/app_list_test_view_delegate.h"
#include <string>
#include <utility>
#include <vector>
#include "ash/app_list/model/app_list_model.h"
#include "ash/public/cpp/app_list/app_list_switches.h"
#include "ash/public/cpp/menu_utils.h"
#include "base/callback.h"
#include "base/files/file_path.h"
#include "base/strings/utf_string_conversions.h"
#include "ui/gfx/image/image_skia.h"
namespace app_list {
namespace test {
AppListTestViewDelegate::AppListTestViewDelegate()
: model_(std::make_unique<AppListTestModel>()),
search_model_(std::make_unique<SearchModel>()),
search_result_context_menu_model_(this) {}
AppListTestViewDelegate::~AppListTestViewDelegate() {}
AppListModel* AppListTestViewDelegate::GetModel() {
return model_.get();
}
SearchModel* AppListTestViewDelegate::GetSearchModel() {
return search_model_.get();
}
void AppListTestViewDelegate::OpenSearchResult(const std::string& result_id,
int event_flags) {
const SearchModel::SearchResults* results = search_model_->results();
for (size_t i = 0; i < results->item_count(); ++i) {
if (results->GetItemAt(i)->id() == result_id) {
open_search_result_counts_[i]++;
break;
}
}
++open_search_result_count_;
}
void AppListTestViewDelegate::DismissAppList() {
++dismiss_count_;
}
void AppListTestViewDelegate::ReplaceTestModel(int item_count) {
model_ = std::make_unique<AppListTestModel>();
model_->PopulateApps(item_count);
search_model_ = std::make_unique<SearchModel>();
}
void AppListTestViewDelegate::SetSearchEngineIsGoogle(bool is_google) {
search_model_->SetSearchEngineIsGoogle(is_google);
}
void AppListTestViewDelegate::ActivateItem(const std::string& id,
int event_flags) {
app_list::AppListItem* item = model_->FindItem(id);
if (!item)
return;
DCHECK(!item->is_folder());
static_cast<AppListTestModel::AppListTestItem*>(item)->Activate(event_flags);
}
void AppListTestViewDelegate::GetContextMenuModel(
const std::string& id,
GetContextMenuModelCallback callback) {
app_list::AppListItem* item = model_->FindItem(id);
// TODO(stevenjb/jennyz): Implement this for folder items
ui::MenuModel* menu = nullptr;
if (item && !item->is_folder()) {
menu = static_cast<AppListTestModel::AppListTestItem*>(item)
->GetContextMenuModel();
}
std::move(callback).Run(ash::menu_utils::GetMojoMenuItemsFromModel(menu));
}
void AppListTestViewDelegate::ShowWallpaperContextMenu(
const gfx::Point& onscreen_location,
ui::MenuSourceType source_type) {
++show_wallpaper_context_menu_count_;
}
bool AppListTestViewDelegate::ProcessHomeLauncherGesture(
ui::GestureEvent* event,
const gfx::Point& screen_location) {
return false;
}
bool AppListTestViewDelegate::CanProcessEventsOnApplistViews() {
return true;
}
void AppListTestViewDelegate::GetNavigableContentsFactory(
content::mojom::NavigableContentsFactoryRequest request) {
fake_navigable_contents_factory_.BindRequest(std::move(request));
}
void AppListTestViewDelegate::GetSearchResultContextMenuModel(
const std::string& result_id,
GetContextMenuModelCallback callback) {
ui::SimpleMenuModel* menu = &search_result_context_menu_model_;
menu->Clear();
// Change items if needed.
int command_id = 0;
menu->AddItem(command_id++, base::ASCIIToUTF16("Item0"));
menu->AddItem(command_id++, base::ASCIIToUTF16("Item1"));
std::move(callback).Run(ash::menu_utils::GetMojoMenuItemsFromModel(menu));
}
bool AppListTestViewDelegate::IsCommandIdChecked(int command_id) const {
return true;
}
bool AppListTestViewDelegate::IsCommandIdEnabled(int command_id) const {
return true;
}
void AppListTestViewDelegate::ExecuteCommand(int command_id, int event_flags) {}
} // namespace test
} // namespace app_list