Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Unified Diff: chrome/browser/ui/web_applications/web_app_ui.cc

Issue 212273002: Move UpdateShortcutInfoAndIconForApp from web_app_ui to web_app (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix build on linux Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/web_applications/web_app_ui.h ('k') | chrome/browser/web_applications/web_app.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/web_applications/web_app_ui.cc
diff --git a/chrome/browser/ui/web_applications/web_app_ui.cc b/chrome/browser/ui/web_applications/web_app_ui.cc
index 8a5bf2a0df6f0376e676cc1fe238247f83af9dca..d800c5206e3b877b870690e65598f219c06af209 100644
--- a/chrome/browser/ui/web_applications/web_app_ui.cc
+++ b/chrome/browser/ui/web_applications/web_app_ui.cc
@@ -8,32 +8,18 @@
#include "base/bind_helpers.h"
#include "base/file_util.h"
#include "base/path_service.h"
-#include "base/prefs/pref_service.h"
-#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/history/select_favicon_frames.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/web_applications/web_app.h"
-#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
-#include "chrome/common/extensions/manifest_handlers/icons_handler.h"
-#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/web_contents.h"
-#include "extensions/common/extension.h"
-#include "grit/theme_resources.h"
-#include "skia/ext/image_operations.h"
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/image/image.h"
-#include "ui/gfx/image/image_family.h"
-#include "ui/gfx/image/image_skia.h"
#include "url/gurl.h"
#if defined(OS_POSIX) && !defined(OS_MACOSX)
@@ -53,22 +39,7 @@ using content::WebContents;
namespace {
-#if defined(OS_MACOSX)
-const int kDesiredSizes[] = {16, 32, 128, 256, 512};
-const size_t kNumDesiredSizes = arraysize(kDesiredSizes);
-#elif defined(OS_LINUX)
-// Linux supports icons of any size. FreeDesktop Icon Theme Specification states
-// that "Minimally you should install a 48x48 icon in the hicolor theme."
-const int kDesiredSizes[] = {16, 32, 48, 128, 256, 512};
-const size_t kNumDesiredSizes = arraysize(kDesiredSizes);
-#elif defined(OS_WIN)
-const int* kDesiredSizes = IconUtil::kIconDimensions;
-const size_t kNumDesiredSizes = IconUtil::kNumIconDimensions;
-#else
-const int kDesiredSizes[] = {32};
-const size_t kNumDesiredSizes = arraysize(kDesiredSizes);
-#endif
-
+// TODO(jackhou): Move all win-specific code to web_app_win.
#if defined(OS_WIN)
// UpdateShortcutWorker holds all context data needed for update shortcut.
// It schedules a pre-update check to find all shortcuts that needs to be
@@ -343,41 +314,10 @@ void UpdateShortcutWorker::DeleteMeOnUIThread() {
}
#endif // defined(OS_WIN)
-void OnImageLoaded(ShellIntegration::ShortcutInfo shortcut_info,
- web_app::ShortcutInfoCallback callback,
- const gfx::ImageFamily& image_family) {
- // If the image failed to load (e.g. if the resource being loaded was empty)
- // use the standard application icon.
- if (image_family.empty()) {
- gfx::Image default_icon =
- ResourceBundle::GetSharedInstance().GetImageNamed(IDR_APP_DEFAULT_ICON);
- int size = kDesiredSizes[kNumDesiredSizes - 1];
- SkBitmap bmp = skia::ImageOperations::Resize(
- *default_icon.ToSkBitmap(), skia::ImageOperations::RESIZE_BEST,
- size, size);
- gfx::ImageSkia image_skia = gfx::ImageSkia::CreateFrom1xBitmap(bmp);
- // We are on the UI thread, and this image is needed from the FILE thread,
- // for creating shortcut icon files.
- image_skia.MakeThreadSafe();
- shortcut_info.favicon.Add(gfx::Image(image_skia));
- } else {
- shortcut_info.favicon = image_family;
- }
-
- callback.Run(shortcut_info);
-}
-
} // namespace
namespace web_app {
-ShellIntegration::ShortcutInfo ShortcutInfoForExtensionAndProfile(
- const extensions::Extension* extension, Profile* profile) {
- ShellIntegration::ShortcutInfo shortcut_info;
- web_app::UpdateShortcutInfoForApp(*extension, profile, &shortcut_info);
- return shortcut_info;
-}
-
void GetShortcutInfoForTab(WebContents* web_contents,
ShellIntegration::ShortcutInfo* info) {
DCHECK(info); // Must provide a valid info.
@@ -410,70 +350,4 @@ void UpdateShortcutForTabContents(WebContents* web_contents) {
#endif // defined(OS_WIN)
}
-void UpdateShortcutInfoForApp(const extensions::Extension& app,
- Profile* profile,
- ShellIntegration::ShortcutInfo* shortcut_info) {
- shortcut_info->extension_id = app.id();
- shortcut_info->is_platform_app = app.is_platform_app();
- shortcut_info->url = extensions::AppLaunchInfo::GetLaunchWebURL(&app);
- shortcut_info->title = base::UTF8ToUTF16(app.name());
- shortcut_info->description = base::UTF8ToUTF16(app.description());
- shortcut_info->extension_path = app.path();
- shortcut_info->profile_path = profile->GetPath();
- shortcut_info->profile_name =
- profile->GetPrefs()->GetString(prefs::kProfileName);
-}
-
-void UpdateShortcutInfoAndIconForApp(
- const extensions::Extension* extension,
- Profile* profile,
- const web_app::ShortcutInfoCallback& callback) {
- ShellIntegration::ShortcutInfo shortcut_info =
- ShortcutInfoForExtensionAndProfile(extension, profile);
-
- std::vector<extensions::ImageLoader::ImageRepresentation> info_list;
- for (size_t i = 0; i < kNumDesiredSizes; ++i) {
- int size = kDesiredSizes[i];
- extensions::ExtensionResource resource =
- extensions::IconsInfo::GetIconResource(
- extension, size, ExtensionIconSet::MATCH_EXACTLY);
- if (!resource.empty()) {
- info_list.push_back(extensions::ImageLoader::ImageRepresentation(
- resource,
- extensions::ImageLoader::ImageRepresentation::ALWAYS_RESIZE,
- gfx::Size(size, size),
- ui::SCALE_FACTOR_100P));
- }
- }
-
- if (info_list.empty()) {
- size_t i = kNumDesiredSizes - 1;
- int size = kDesiredSizes[i];
-
- // If there is no icon at the desired sizes, we will resize what we can get.
- // Making a large icon smaller is preferred to making a small icon larger,
- // so look for a larger icon first:
- extensions::ExtensionResource resource =
- extensions::IconsInfo::GetIconResource(
- extension, size, ExtensionIconSet::MATCH_BIGGER);
- if (resource.empty()) {
- resource = extensions::IconsInfo::GetIconResource(
- extension, size, ExtensionIconSet::MATCH_SMALLER);
- }
- info_list.push_back(extensions::ImageLoader::ImageRepresentation(
- resource,
- extensions::ImageLoader::ImageRepresentation::ALWAYS_RESIZE,
- gfx::Size(size, size),
- ui::SCALE_FACTOR_100P));
- }
-
- // |info_list| may still be empty at this point, in which case
- // LoadImageFamilyAsync will call the OnImageLoaded callback with an empty
- // image and exit immediately.
- extensions::ImageLoader::Get(profile)->LoadImageFamilyAsync(
- extension,
- info_list,
- base::Bind(&OnImageLoaded, shortcut_info, callback));
-}
-
} // namespace web_app
« no previous file with comments | « chrome/browser/ui/web_applications/web_app_ui.h ('k') | chrome/browser/web_applications/web_app.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698