Commit baebfae2 authored by nancy's avatar nancy Committed by Commit Bot

Remove Extensions, ARC, and Crostini's DataSource.

AppServiceDataSource is used for the Apps searching on Chrome OS, so
the Extenions, ARC and Crostini's DataSource can be removed. Related
AppResult is removed too.

ExtensionAppResult is removed as well. So the unit test for
ExtensionAppResult is removed.

BUG=1016159

Change-Id: Ibf3c67b10178419772e2aabb2466721799658336
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1858538Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarIstiaque Ahmed <lazyboy@chromium.org>
Commit-Queue: Nancy Wang <nancylingwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708051}
parent 587eff93
......@@ -29,7 +29,6 @@
#include "chrome/browser/ui/app_list/chrome_app_list_item.h"
#include "chrome/browser/ui/app_list/extension_app_model_builder.h"
#include "chrome/browser/ui/app_list/md_icon_normalizer.h"
#include "chrome/browser/ui/app_list/search/extension_app_result.h"
#include "chrome/browser/ui/app_list/test/fake_app_list_model_updater.h"
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
#include "components/arc/test/fake_app_instance.h"
......@@ -333,23 +332,6 @@ TEST_F(ChromeAppIconWithModelTest, IconsTheSame) {
EXPECT_TRUE(
AreEqual(reference_icon_app_list.image_skia(), app_list_item_image));
// Load reference icon sized for the search result.
TestAppIcon reference_icon_search(
profile(), kTestAppId,
ash::AppListConfig::instance().suggestion_chip_icon_dimension(),
resize_function);
// Wait until reference data is loaded.
reference_icon_search.image_skia().EnsureRepsForSupportedScales();
reference_icon_search.WaitForIconUpdates();
EXPECT_FALSE(IsBlankImage(reference_icon_search.image_skia()));
app_list::ExtensionAppResult search(profile(), kTestAppId,
app_list_controller(),
/* is_recommendation */ true);
WaitForIconUpdates(search.chip_icon());
EXPECT_TRUE(AreEqual(reference_icon_search.image_skia(), search.chip_icon()));
// Load reference icon sized for the shelf.
TestAppIcon reference_icon_shelf(profile(), kTestAppId,
extension_misc::EXTENSION_ICON_MEDIUM,
......
......@@ -3514,8 +3514,6 @@ jumbo_static_library("ui") {
"app_list/search/drive_quick_access_provider.h",
"app_list/search/drive_quick_access_result.cc",
"app_list/search/drive_quick_access_result.h",
"app_list/search/extension_app_result.cc",
"app_list/search/extension_app_result.h",
"app_list/search/mixer.cc",
"app_list/search/mixer.h",
"app_list/search/omnibox_provider.cc",
......@@ -3677,10 +3675,6 @@ jumbo_static_library("ui") {
"app_list/page_break_constants.h",
"app_list/search/app_service_app_result.cc",
"app_list/search/app_service_app_result.h",
"app_list/search/arc_app_result.cc",
"app_list/search/arc_app_result.h",
"app_list/search/crostini_app_result.cc",
"app_list/search/crostini_app_result.h",
"ash/launcher/app_window_base.cc",
"ash/launcher/app_window_base.h",
"ash/launcher/arc_app_shelf_id.cc",
......
// Copyright 2016 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/app_list/search/arc_app_result.h"
#include <utility>
#include "ash/public/cpp/app_list/app_list_config.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/arc/arc_app_context_menu.h"
#include "chrome/browser/ui/app_list/arc/arc_app_icon_loader.h"
namespace {
const char kArcAppPrefix[] = "arc://";
}
namespace app_list {
ArcAppResult::ArcAppResult(Profile* profile,
const std::string& app_id,
AppListControllerDelegate* controller,
bool is_recommendation)
: AppResult(profile, app_id, controller, is_recommendation) {
std::string id = kArcAppPrefix;
id += app_id;
set_id(id);
}
ArcAppResult::~ArcAppResult() {}
void ArcAppResult::ExecuteLaunchCommand(int event_flags) {
Launch(event_flags, GetContextMenuAppLaunchInteraction());
}
void ArcAppResult::Open(int event_flags) {
Launch(event_flags, GetAppLaunchInteraction());
}
void ArcAppResult::GetContextMenuModel(GetMenuModelCallback callback) {
context_menu_ = std::make_unique<ArcAppContextMenu>(this, profile(), app_id(),
controller());
context_menu_->GetMenuModel(std::move(callback));
}
ash::SearchResultType ArcAppResult::GetSearchResultType() const {
return ash::PLAY_STORE_APP;
}
AppContextMenu* ArcAppResult::GetAppContextMenu() {
return context_menu_.get();
}
void ArcAppResult::Launch(int event_flags,
arc::UserInteractionType interaction) {
arc::LaunchApp(profile(), app_id(), event_flags, interaction,
controller()->GetAppListDisplayId());
}
arc::UserInteractionType ArcAppResult::GetAppLaunchInteraction() {
return display_type() == ash::SearchResultDisplayType::kRecommendation
? arc::UserInteractionType::APP_STARTED_FROM_LAUNCHER_SUGGESTED_APP
: arc::UserInteractionType::APP_STARTED_FROM_LAUNCHER_SEARCH;
}
arc::UserInteractionType ArcAppResult::GetContextMenuAppLaunchInteraction() {
return display_type() == ash::SearchResultDisplayType::kRecommendation
? arc::UserInteractionType::
APP_STARTED_FROM_LAUNCHER_SUGGESTED_APP_CONTEXT_MENU
: arc::UserInteractionType::
APP_STARTED_FROM_LAUNCHER_SEARCH_CONTEXT_MENU;
}
} // namespace app_list
// Copyright 2016 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 CHROME_BROWSER_UI_APP_LIST_SEARCH_ARC_APP_RESULT_H_
#define CHROME_BROWSER_UI_APP_LIST_SEARCH_ARC_APP_RESULT_H_
#include <memory>
#include <string>
#include "ash/public/cpp/app_list/app_list_metrics.h"
#include "base/macros.h"
#include "chrome/browser/ui/app_icon_loader_delegate.h"
#include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
#include "chrome/browser/ui/app_list/search/app_result.h"
#include "components/arc/metrics/arc_metrics_constants.h"
class AppListControllerDelegate;
class ArcAppContextMenu;
class Profile;
namespace app_list {
class ArcAppResult : public AppResult {
public:
ArcAppResult(Profile* profile,
const std::string& app_id,
AppListControllerDelegate* controller,
bool is_recommendation);
~ArcAppResult() override;
// ChromeSearchResult overrides:
void Open(int event_flags) override;
void GetContextMenuModel(GetMenuModelCallback callback) override;
ash::SearchResultType GetSearchResultType() const override;
// AppContextMenuDelegate overrides:
void ExecuteLaunchCommand(int event_flags) override;
private:
// ChromeSearchResult overrides:
AppContextMenu* GetAppContextMenu() override;
void Launch(int event_flags, arc::UserInteractionType interaction);
arc::UserInteractionType GetAppLaunchInteraction();
arc::UserInteractionType GetContextMenuAppLaunchInteraction();
std::unique_ptr<ArcAppContextMenu> context_menu_;
DISALLOW_COPY_AND_ASSIGN(ArcAppResult);
};
} // namespace app_list
#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_ARC_APP_RESULT_H_
// 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/app_list/search/crostini_app_result.h"
#include <utility>
#include "ash/public/cpp/app_list/app_list_config.h"
#include "chrome/browser/chromeos/crostini/crostini_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/crostini/crostini_app_context_menu.h"
#include "chrome/browser/ui/app_list/crostini/crostini_app_icon_loader.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
namespace app_list {
CrostiniAppResult::CrostiniAppResult(Profile* profile,
const std::string& app_id,
AppListControllerDelegate* controller,
bool is_recommendation)
: AppResult(profile, app_id, controller, is_recommendation) {
set_id(app_id);
}
CrostiniAppResult::~CrostiniAppResult() = default;
void CrostiniAppResult::Open(int event_flags) {
ChromeLauncherController::instance()->ActivateApp(
id(), ash::LAUNCH_FROM_APP_LIST_SEARCH, event_flags,
controller()->GetAppListDisplayId());
}
void CrostiniAppResult::GetContextMenuModel(GetMenuModelCallback callback) {
context_menu_ = std::make_unique<CrostiniAppContextMenu>(profile(), app_id(),
controller());
context_menu_->GetMenuModel(std::move(callback));
}
void CrostiniAppResult::ExecuteLaunchCommand(int event_flags) {
Open(event_flags);
}
ash::SearchResultType CrostiniAppResult::GetSearchResultType() const {
return ash::CROSTINI_APP;
}
AppContextMenu* CrostiniAppResult::GetAppContextMenu() {
return context_menu_.get();
}
} // namespace app_list
// 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.
#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_CROSTINI_APP_RESULT_H_
#define CHROME_BROWSER_UI_APP_LIST_SEARCH_CROSTINI_APP_RESULT_H_
#include <memory>
#include <string>
#include "ash/public/cpp/app_list/app_list_metrics.h"
#include "base/macros.h"
#include "chrome/browser/ui/app_list/search/app_result.h"
class CrostiniAppContextMenu;
namespace app_list {
// Result of CrostiniSearchProvider.
class CrostiniAppResult : public AppResult {
public:
CrostiniAppResult(Profile* profile,
const std::string& app_id,
AppListControllerDelegate* controller,
bool is_recommendation);
~CrostiniAppResult() override;
// ChromeSearchResult overrides:
void Open(int event_flags) override;
void GetContextMenuModel(GetMenuModelCallback callback) override;
void ExecuteLaunchCommand(int event_flags) override;
ash::SearchResultType GetSearchResultType() const override;
private:
// ChromeSearchResult overrides:
AppContextMenu* GetAppContextMenu() override;
std::unique_ptr<CrostiniAppContextMenu> context_menu_;
DISALLOW_COPY_AND_ASSIGN(CrostiniAppResult);
};
} // namespace app_list
#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_CROSTINI_APP_RESULT_H_
// 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 "chrome/browser/ui/app_list/search/extension_app_result.h"
#include <utility>
#include "ash/public/cpp/app_list/app_list_config.h"
#include "ash/public/cpp/app_list/app_list_switches.h"
#include "base/bind.h"
#include "base/metrics/user_metrics.h"
#include "chrome/browser/extensions/chrome_app_icon.h"
#include "chrome/browser/extensions/chrome_app_icon_service.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/extension_app_context_menu.h"
#include "chrome/browser/ui/app_list/md_icon_normalizer.h"
#include "chrome/browser/ui/extensions/extension_enable_flow.h"
#include "chrome/common/extensions/extension_metrics.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system_provider.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "ui/events/event_constants.h"
namespace app_list {
ExtensionAppResult::ExtensionAppResult(Profile* profile,
const std::string& app_id,
AppListControllerDelegate* controller,
bool is_recommendation)
: AppResult(profile, app_id, controller, is_recommendation) {
set_id(extensions::Extension::GetBaseURLFromExtensionId(app_id).spec());
const extensions::Extension* extension =
extensions::ExtensionRegistry::Get(profile)->GetInstalledExtension(
app_id);
DCHECK(extension);
is_platform_app_ = extension->is_platform_app();
icon_ = extensions::ChromeAppIconService::Get(profile)->CreateIcon(
this, app_id,
ash::AppListConfig::instance().GetPreferredIconDimension(display_type()),
base::BindRepeating(&app_list::MaybeResizeAndPadIconForMd));
// Load an additional chip icon when it is a recommendation result
// so that it renders clearly in both a chip and a tile.
if (display_type() == ash::SearchResultDisplayType::kRecommendation) {
chip_icon_ = extensions::ChromeAppIconService::Get(profile)->CreateIcon(
this, app_id,
ash::AppListConfig::instance().suggestion_chip_icon_dimension(),
base::BindRepeating(&app_list::MaybeResizeAndPadIconForMd));
}
StartObservingExtensionRegistry();
}
ExtensionAppResult::~ExtensionAppResult() {
StopObservingExtensionRegistry();
}
void ExtensionAppResult::Open(int event_flags) {
const extensions::Extension* extension =
extensions::ExtensionRegistry::Get(profile())->GetInstalledExtension(
app_id());
if (!extension)
return;
// Don't auto-enable apps that cannot be launched.
if (!extensions::util::IsAppLaunchable(app_id(), profile()))
return;
// Check if enable flow is already running or should be started.
if (RunExtensionEnableFlow())
return;
// Record the search metrics if the ChromeSearchResult is not a suggested app.
if (display_type() != ash::SearchResultDisplayType::kRecommendation)
extensions::RecordAppListSearchLaunch(extension);
controller()->ActivateApp(
profile(), extension,
AppListControllerDelegate::LAUNCH_FROM_APP_LIST_SEARCH, event_flags);
}
void ExtensionAppResult::GetContextMenuModel(GetMenuModelCallback callback) {
if (!context_menu_) {
context_menu_ = std::make_unique<ExtensionAppContextMenu>(
this, profile(), app_id(), controller(), is_platform_app_);
}
context_menu_->GetMenuModel(std::move(callback));
}
ash::SearchResultType ExtensionAppResult::GetSearchResultType() const {
return ash::EXTENSION_APP;
}
void ExtensionAppResult::StartObservingExtensionRegistry() {
DCHECK(!extension_registry_);
extension_registry_ = extensions::ExtensionRegistry::Get(profile());
extension_registry_->AddObserver(this);
}
void ExtensionAppResult::StopObservingExtensionRegistry() {
if (extension_registry_)
extension_registry_->RemoveObserver(this);
extension_registry_ = NULL;
}
bool ExtensionAppResult::RunExtensionEnableFlow() {
if (extensions::util::IsAppLaunchableWithoutEnabling(app_id(), profile()))
return false;
if (!extension_enable_flow_) {
extension_enable_flow_ =
std::make_unique<ExtensionEnableFlow>(profile(), app_id(), this);
extension_enable_flow_->StartForNativeWindow(nullptr);
}
return true;
}
AppContextMenu* ExtensionAppResult::GetAppContextMenu() {
return context_menu_.get();
}
void ExtensionAppResult::OnIconUpdated(extensions::ChromeAppIcon* icon) {
const gfx::Size icon_size(
ash::AppListConfig::instance().GetPreferredIconDimension(display_type()),
ash::AppListConfig::instance().GetPreferredIconDimension(display_type()));
const gfx::Size chip_icon_size(
ash::AppListConfig::instance().suggestion_chip_icon_dimension(),
ash::AppListConfig::instance().suggestion_chip_icon_dimension());
DCHECK(icon_size != chip_icon_size);
if (icon->image_skia().size() == icon_size) {
SetIcon(icon->image_skia());
} else if (icon->image_skia().size() == chip_icon_size) {
DCHECK(display_type() == ash::SearchResultDisplayType::kRecommendation);
SetChipIcon(icon->image_skia());
} else {
NOTREACHED();
}
}
void ExtensionAppResult::ExecuteLaunchCommand(int event_flags) {
Open(event_flags);
}
void ExtensionAppResult::ExtensionEnableFlowFinished() {
extension_enable_flow_.reset();
// Automatically open app after enabling.
Open(ui::EF_NONE);
}
void ExtensionAppResult::ExtensionEnableFlowAborted(bool user_initiated) {
extension_enable_flow_.reset();
}
void ExtensionAppResult::OnExtensionLoaded(
content::BrowserContext* browser_context,
const extensions::Extension* extension) {
// Old |icon_| might be invalidated for forever in case extension gets
// updated. In this case we need re-create icon again.
if (!icon_->IsValid())
icon_->Reload();
if (display_type() == ash::SearchResultDisplayType::kRecommendation &&
!chip_icon_->IsValid()) {
chip_icon_->Reload();
}
}
void ExtensionAppResult::OnShutdown(extensions::ExtensionRegistry* registry) {
DCHECK_EQ(extension_registry_, registry);
StopObservingExtensionRegistry();
}
} // namespace app_list
// 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.
#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_EXTENSION_APP_RESULT_H_
#define CHROME_BROWSER_UI_APP_LIST_SEARCH_EXTENSION_APP_RESULT_H_
#include <memory>
#include <string>
#include "ash/public/cpp/app_list/app_list_metrics.h"
#include "base/macros.h"
#include "chrome/browser/extensions/chrome_app_icon_delegate.h"
#include "chrome/browser/ui/app_list/search/app_result.h"
#include "chrome/browser/ui/extensions/extension_enable_flow_delegate.h"
#include "extensions/browser/extension_icon_image.h"
#include "extensions/browser/extension_registry_observer.h"
class AppListControllerDelegate;
class ExtensionEnableFlow;
class Profile;
namespace extensions {
class ExtensionRegistry;
}
namespace app_list {
class ExtensionAppContextMenu;
class ExtensionAppResult : public AppResult,
public extensions::ChromeAppIconDelegate,
public ExtensionEnableFlowDelegate,
public extensions::ExtensionRegistryObserver {
public:
ExtensionAppResult(Profile* profile,
const std::string& app_id,
AppListControllerDelegate* controller,
bool is_recommendation);
~ExtensionAppResult() override;
// ChromeSearchResult overrides:
void Open(int event_flags) override;
void GetContextMenuModel(GetMenuModelCallback callback) override;
ash::SearchResultType GetSearchResultType() const override;
private:
void StartObservingExtensionRegistry();
void StopObservingExtensionRegistry();
// Checks if extension is disabled and if enable flow should be started.
// Returns true if extension enable flow is started or there is already one
// running.
bool RunExtensionEnableFlow();
// ChromeSearchResult overrides:
AppContextMenu* GetAppContextMenu() override;
// AppContextMenuDelegate overrides:
void ExecuteLaunchCommand(int event_flags) override;
// ExtensionEnableFlowDelegate overrides:
void ExtensionEnableFlowFinished() override;
void ExtensionEnableFlowAborted(bool user_initiated) override;
// extensions::ExtensionRegistryObserver override:
void OnExtensionLoaded(content::BrowserContext* browser_context,
const extensions::Extension* extension) override;
void OnShutdown(extensions::ExtensionRegistry* registry) override;
// extensions::ChromeAppIconDelegate:
void OnIconUpdated(extensions::ChromeAppIcon* icon) override;
bool is_platform_app_;
std::unique_ptr<extensions::ChromeAppIcon> icon_;
std::unique_ptr<extensions::ChromeAppIcon> chip_icon_;
std::unique_ptr<ExtensionAppContextMenu> context_menu_;
std::unique_ptr<ExtensionEnableFlow> extension_enable_flow_;
extensions::ExtensionRegistry* extension_registry_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(ExtensionAppResult);
};
} // namespace app_list
#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_EXTENSION_APP_RESULT_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment