Commit 1b2a62de authored by Qiang Xu's avatar Qiang Xu Committed by Commit Bot

arc: move IconDecodeRequest to chrome/browser/chromeos/arc

changes:
To serve decoding icon for app shortcut plumbed from android, this
class shouldn't be scoped to app_list namespace.

Bug: 803291
Test: compiles & covered by tests
Change-Id: Ia7c8e69a69a610769ae3e049921205200d2c577e
Reviewed-on: https://chromium-review.googlesource.com/1014567Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Qiang Xu <warx@google.com>
Cr-Commit-Position: refs/heads/master@{#551411}
parent 37ab908e
...@@ -395,6 +395,8 @@ source_set("chromeos") { ...@@ -395,6 +395,8 @@ source_set("chromeos") {
"arc/fileapi/chrome_content_provider_url_util.h", "arc/fileapi/chrome_content_provider_url_util.h",
"arc/fileapi/file_stream_forwarder.cc", "arc/fileapi/file_stream_forwarder.cc",
"arc/fileapi/file_stream_forwarder.h", "arc/fileapi/file_stream_forwarder.h",
"arc/icon_decode_request.cc",
"arc/icon_decode_request.h",
"arc/intent_helper/arc_external_protocol_dialog.cc", "arc/intent_helper/arc_external_protocol_dialog.cc",
"arc/intent_helper/arc_external_protocol_dialog.h", "arc/intent_helper/arc_external_protocol_dialog.h",
"arc/intent_helper/arc_navigation_throttle.cc", "arc/intent_helper/arc_navigation_throttle.cc",
......
...@@ -2,16 +2,16 @@ ...@@ -2,16 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/ui/app_list/search/arc/icon_decode_request.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h"
#include <memory> #include <memory>
#include <utility> #include <utility>
#include <vector> #include <vector>
#include "chrome/browser/ui/app_list/search/chrome_search_result.h"
#include "chrome/grit/component_extension_resources.h" #include "chrome/grit/component_extension_resources.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "ui/app_list/app_list_constants.h" #include "ui/base/resource/resource_bundle.h"
#include "ui/base/resource/scale_factor.h"
#include "ui/gfx/codec/png_codec.h" #include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/image/image_skia.h" #include "ui/gfx/image/image_skia.h"
#include "ui/gfx/image/image_skia_operations.h" #include "ui/gfx/image/image_skia_operations.h"
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
using content::BrowserThread; using content::BrowserThread;
namespace app_list { namespace arc {
namespace { namespace {
...@@ -80,8 +80,10 @@ void IconDecodeRequest::DisableSafeDecodingForTesting() { ...@@ -80,8 +80,10 @@ void IconDecodeRequest::DisableSafeDecodingForTesting() {
disable_safe_decoding_for_testing = true; disable_safe_decoding_for_testing = true;
} }
IconDecodeRequest::IconDecodeRequest(SetIconCallback set_icon_callback) IconDecodeRequest::IconDecodeRequest(SetIconCallback set_icon_callback,
: set_icon_callback_(std::move(set_icon_callback)) {} int requested_size)
: set_icon_callback_(std::move(set_icon_callback)),
requested_size_(requested_size) {}
IconDecodeRequest::~IconDecodeRequest() = default; IconDecodeRequest::~IconDecodeRequest() = default;
...@@ -109,8 +111,8 @@ void IconDecodeRequest::StartWithOptions( ...@@ -109,8 +111,8 @@ void IconDecodeRequest::StartWithOptions(
void IconDecodeRequest::OnImageDecoded(const SkBitmap& bitmap) { void IconDecodeRequest::OnImageDecoded(const SkBitmap& bitmap) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
const gfx::Size resource_size(kGridIconDimension, kGridIconDimension); const gfx::Size resource_size(requested_size_, requested_size_);
auto icon_source = std::make_unique<IconSource>(kGridIconDimension); auto icon_source = std::make_unique<IconSource>(requested_size_);
icon_source->SetDecodedImage(bitmap); icon_source->SetDecodedImage(bitmap);
const gfx::ImageSkia icon = const gfx::ImageSkia icon =
gfx::ImageSkia(std::move(icon_source), resource_size); gfx::ImageSkia(std::move(icon_source), resource_size);
...@@ -123,8 +125,8 @@ void IconDecodeRequest::OnDecodeImageFailed() { ...@@ -123,8 +125,8 @@ void IconDecodeRequest::OnDecodeImageFailed() {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
DLOG(ERROR) << "Failed to decode an icon image."; DLOG(ERROR) << "Failed to decode an icon image.";
const gfx::Size resource_size(kGridIconDimension, kGridIconDimension); const gfx::Size resource_size(requested_size_, requested_size_);
auto icon_source = std::make_unique<IconSource>(kGridIconDimension); auto icon_source = std::make_unique<IconSource>(requested_size_);
const gfx::ImageSkia icon = const gfx::ImageSkia icon =
gfx::ImageSkia(std::move(icon_source), resource_size); gfx::ImageSkia(std::move(icon_source), resource_size);
icon.EnsureRepsForSupportedScales(); icon.EnsureRepsForSupportedScales();
...@@ -132,4 +134,4 @@ void IconDecodeRequest::OnDecodeImageFailed() { ...@@ -132,4 +134,4 @@ void IconDecodeRequest::OnDecodeImageFailed() {
std::move(set_icon_callback_).Run(icon); std::move(set_icon_callback_).Run(icon);
} }
} // namespace app_list } // namespace arc
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_ARC_ICON_DECODE_REQUEST_H_ #ifndef CHROME_BROWSER_CHROMEOS_ARC_ICON_DECODE_REQUEST_H_
#define CHROME_BROWSER_UI_APP_LIST_SEARCH_ARC_ICON_DECODE_REQUEST_H_ #define CHROME_BROWSER_CHROMEOS_ARC_ICON_DECODE_REQUEST_H_
#include <vector> #include <vector>
...@@ -15,13 +15,13 @@ namespace gfx { ...@@ -15,13 +15,13 @@ namespace gfx {
class ImageSkia; class ImageSkia;
} // namespace gfx } // namespace gfx
namespace app_list { namespace arc {
class IconDecodeRequest : public ImageDecoder::ImageRequest { class IconDecodeRequest : public ImageDecoder::ImageRequest {
public: public:
using SetIconCallback = base::OnceCallback<void(const gfx::ImageSkia& icon)>; using SetIconCallback = base::OnceCallback<void(const gfx::ImageSkia& icon)>;
explicit IconDecodeRequest(SetIconCallback set_icon_callback); IconDecodeRequest(SetIconCallback set_icon_callback, int requested_size);
~IconDecodeRequest() override; ~IconDecodeRequest() override;
// Disables async safe decoding requests when unit tests are executed. // Disables async safe decoding requests when unit tests are executed.
...@@ -41,10 +41,11 @@ class IconDecodeRequest : public ImageDecoder::ImageRequest { ...@@ -41,10 +41,11 @@ class IconDecodeRequest : public ImageDecoder::ImageRequest {
private: private:
SetIconCallback set_icon_callback_; SetIconCallback set_icon_callback_;
int requested_size_ = 0;
DISALLOW_COPY_AND_ASSIGN(IconDecodeRequest); DISALLOW_COPY_AND_ASSIGN(IconDecodeRequest);
}; };
} // namespace app_list } // namespace arc
#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_ARC_ICON_DECODE_REQUEST_H_ #endif // CHROME_BROWSER_CHROMEOS_ARC_ICON_DECODE_REQUEST_H_
...@@ -3526,8 +3526,6 @@ split_static_library("ui") { ...@@ -3526,8 +3526,6 @@ split_static_library("ui") {
"app_list/search/arc/arc_playstore_search_provider.h", "app_list/search/arc/arc_playstore_search_provider.h",
"app_list/search/arc/arc_playstore_search_result.cc", "app_list/search/arc/arc_playstore_search_result.cc",
"app_list/search/arc/arc_playstore_search_result.h", "app_list/search/arc/arc_playstore_search_result.h",
"app_list/search/arc/icon_decode_request.cc",
"app_list/search/arc/icon_decode_request.h",
"app_list/search/chrome_search_result.cc", "app_list/search/chrome_search_result.cc",
"app_list/search/chrome_search_result.h", "app_list/search/chrome_search_result.h",
"app_list/search/common/json_response_fetcher.cc", "app_list/search/common/json_response_fetcher.cc",
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/arc/icon_decode_request.h"
#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "chrome/browser/ui/app_list/app_list_test_util.h"
#include "chrome/browser/ui/app_list/arc/arc_app_test.h" #include "chrome/browser/ui/app_list/arc/arc_app_test.h"
#include "chrome/browser/ui/app_list/search/arc/icon_decode_request.h"
#include "chrome/browser/ui/app_list/search/chrome_search_result.h" #include "chrome/browser/ui/app_list/search/chrome_search_result.h"
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h" #include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
...@@ -54,7 +54,7 @@ TEST_F(ArcAppDataSearchProviderTest, Basic) { ...@@ -54,7 +54,7 @@ TEST_F(ArcAppDataSearchProviderTest, Basic) {
std::unique_ptr<ArcAppDataSearchProvider> provider = std::unique_ptr<ArcAppDataSearchProvider> provider =
CreateSearch(kMaxResults); CreateSearch(kMaxResults);
EXPECT_TRUE(provider->results().empty()); EXPECT_TRUE(provider->results().empty());
IconDecodeRequest::DisableSafeDecodingForTesting(); arc::IconDecodeRequest::DisableSafeDecodingForTesting();
provider->Start(base::UTF8ToUTF16(kQuery)); provider->Start(base::UTF8ToUTF16(kQuery));
const auto& results = provider->results(); const auto& results = provider->results();
......
...@@ -7,10 +7,11 @@ ...@@ -7,10 +7,11 @@
#include <utility> #include <utility>
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/arc/icon_decode_request.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/search/arc/icon_decode_request.h"
#include "components/arc/arc_bridge_service.h" #include "components/arc/arc_bridge_service.h"
#include "components/arc/arc_service_manager.h" #include "components/arc/arc_service_manager.h"
#include "ui/app_list/app_list_constants.h"
#include "ui/gfx/canvas.h" #include "ui/gfx/canvas.h"
#include "ui/gfx/image/canvas_image_source.h" #include "ui/gfx/image/canvas_image_source.h"
#include "ui/gfx/image/image_skia_operations.h" #include "ui/gfx/image/image_skia_operations.h"
...@@ -91,9 +92,10 @@ ArcAppDataSearchResult::ArcAppDataSearchResult( ...@@ -91,9 +92,10 @@ ArcAppDataSearchResult::ArcAppDataSearchResult(
return; return;
} }
icon_decode_request_ = std::make_unique<IconDecodeRequest>( icon_decode_request_ = std::make_unique<arc::IconDecodeRequest>(
base::BindOnce(&ArcAppDataSearchResult::SetIconToAvatarIcon, base::BindOnce(&ArcAppDataSearchResult::SetIconToAvatarIcon,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()),
kGridIconDimension);
icon_decode_request_->StartWithOptions(icon_png_data().value()); icon_decode_request_->StartWithOptions(icon_png_data().value());
} }
......
...@@ -17,9 +17,11 @@ ...@@ -17,9 +17,11 @@
class AppListControllerDelegate; class AppListControllerDelegate;
class Profile; class Profile;
namespace app_list { namespace arc {
class IconDecodeRequest; class IconDecodeRequest;
} // namespace arc
namespace app_list {
class ArcAppDataSearchResult : public ChromeSearchResult { class ArcAppDataSearchResult : public ChromeSearchResult {
public: public:
...@@ -46,7 +48,7 @@ class ArcAppDataSearchResult : public ChromeSearchResult { ...@@ -46,7 +48,7 @@ class ArcAppDataSearchResult : public ChromeSearchResult {
void SetIconToAvatarIcon(const gfx::ImageSkia& icon); void SetIconToAvatarIcon(const gfx::ImageSkia& icon);
arc::mojom::AppDataResultPtr data_; arc::mojom::AppDataResultPtr data_;
std::unique_ptr<IconDecodeRequest> icon_decode_request_; std::unique_ptr<arc::IconDecodeRequest> icon_decode_request_;
// |profile_| is owned by ProfileInfo. // |profile_| is owned by ProfileInfo.
Profile* const profile_; Profile* const profile_;
......
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/arc/icon_decode_request.h"
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "chrome/browser/ui/app_list/app_list_test_util.h"
#include "chrome/browser/ui/app_list/arc/arc_app_test.h" #include "chrome/browser/ui/app_list/arc/arc_app_test.h"
#include "chrome/browser/ui/app_list/search/arc/arc_playstore_search_result.h" #include "chrome/browser/ui/app_list/search/arc/arc_playstore_search_result.h"
#include "chrome/browser/ui/app_list/search/arc/icon_decode_request.h"
#include "chrome/browser/ui/app_list/search/chrome_search_result.h" #include "chrome/browser/ui/app_list/search/chrome_search_result.h"
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h" #include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
#include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile.h"
...@@ -76,7 +76,7 @@ TEST_F(ArcPlayStoreSearchProviderTest, Basic) { ...@@ -76,7 +76,7 @@ TEST_F(ArcPlayStoreSearchProviderTest, Basic) {
std::unique_ptr<ArcPlayStoreSearchProvider> provider = std::unique_ptr<ArcPlayStoreSearchProvider> provider =
CreateSearch(kMaxResults); CreateSearch(kMaxResults);
EXPECT_TRUE(provider->results().empty()); EXPECT_TRUE(provider->results().empty());
IconDecodeRequest::DisableSafeDecodingForTesting(); arc::IconDecodeRequest::DisableSafeDecodingForTesting();
AddExtension(CreateExtension(extension_misc::kGmailAppId).get()); AddExtension(CreateExtension(extension_misc::kGmailAppId).get());
...@@ -112,7 +112,7 @@ TEST_F(ArcPlayStoreSearchProviderTest, FailedQuery) { ...@@ -112,7 +112,7 @@ TEST_F(ArcPlayStoreSearchProviderTest, FailedQuery) {
std::unique_ptr<ArcPlayStoreSearchProvider> provider = std::unique_ptr<ArcPlayStoreSearchProvider> provider =
CreateSearch(kMaxResults); CreateSearch(kMaxResults);
EXPECT_TRUE(provider->results().empty()); EXPECT_TRUE(provider->results().empty());
IconDecodeRequest::DisableSafeDecodingForTesting(); arc::IconDecodeRequest::DisableSafeDecodingForTesting();
// Test for empty queries. // Test for empty queries.
// Create a non-empty query. // Create a non-empty query.
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
#include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/arc/icon_decode_request.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/arc/arc_playstore_app_context_menu.h" #include "chrome/browser/ui/app_list/arc/arc_playstore_app_context_menu.h"
#include "chrome/browser/ui/app_list/search/arc/icon_decode_request.h"
#include "chrome/browser/ui/app_list/search/search_util.h" #include "chrome/browser/ui/app_list/search/search_util.h"
#include "components/arc/arc_bridge_service.h" #include "components/arc/arc_bridge_service.h"
#include "components/arc/arc_service_manager.h" #include "components/arc/arc_service_manager.h"
...@@ -75,8 +75,10 @@ ArcPlayStoreSearchResult::ArcPlayStoreSearchResult( ...@@ -75,8 +75,10 @@ ArcPlayStoreSearchResult::ArcPlayStoreSearchResult(
set_result_type(is_instant_app() ? ash::SearchResultType::kInstantApp set_result_type(is_instant_app() ? ash::SearchResultType::kInstantApp
: ash::SearchResultType::kPlayStoreApp); : ash::SearchResultType::kPlayStoreApp);
icon_decode_request_ = std::make_unique<IconDecodeRequest>(base::BindOnce( icon_decode_request_ = std::make_unique<arc::IconDecodeRequest>(
&ArcPlayStoreSearchResult::SetIcon, weak_ptr_factory_.GetWeakPtr())); base::BindOnce(&ArcPlayStoreSearchResult::SetIcon,
weak_ptr_factory_.GetWeakPtr()),
kGridIconDimension);
icon_decode_request_->StartWithOptions(icon_png_data()); icon_decode_request_->StartWithOptions(icon_png_data());
} }
......
...@@ -19,9 +19,11 @@ class AppListControllerDelegate; ...@@ -19,9 +19,11 @@ class AppListControllerDelegate;
class ArcPlayStoreAppContextMenu; class ArcPlayStoreAppContextMenu;
class Profile; class Profile;
namespace app_list { namespace arc {
class IconDecodeRequest; class IconDecodeRequest;
} // namespace arc
namespace app_list {
class ArcPlayStoreSearchResult : public ChromeSearchResult, class ArcPlayStoreSearchResult : public ChromeSearchResult,
public AppContextMenuDelegate { public AppContextMenuDelegate {
...@@ -54,7 +56,7 @@ class ArcPlayStoreSearchResult : public ChromeSearchResult, ...@@ -54,7 +56,7 @@ class ArcPlayStoreSearchResult : public ChromeSearchResult,
} }
arc::mojom::AppDiscoveryResultPtr data_; arc::mojom::AppDiscoveryResultPtr data_;
std::unique_ptr<IconDecodeRequest> icon_decode_request_; std::unique_ptr<arc::IconDecodeRequest> icon_decode_request_;
// |profile_| is owned by ProfileInfo. // |profile_| is owned by ProfileInfo.
Profile* const profile_; Profile* const profile_;
......
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