summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsimonhatch@chromium.org <simonhatch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-09 23:34:21 +0000
committersimonhatch@chromium.org <simonhatch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-09 23:34:21 +0000
commit681b4b88d953e52906a61d7f6a09539e0b8b2e03 (patch)
tree9a2dae4b78e805ddad95375279ea538b9411ca92
parentdbebe24b6efdcab99bf0674f79c845ff0997fc0c (diff)
downloadchromium_src-681b4b88d953e52906a61d7f6a09539e0b8b2e03.zip
chromium_src-681b4b88d953e52906a61d7f6a09539e0b8b2e03.tar.gz
chromium_src-681b4b88d953e52906a61d7f6a09539e0b8b2e03.tar.bz2
Skip the cached icons if the icon can change (ie. exe/dll/ico on Windows).
BUG=226918 Review URL: https://chromiumcodereview.appspot.com/13812014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193259 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/icon_loader.cc3
-rw-r--r--chrome/browser/icon_loader.h3
-rw-r--r--chrome/browser/icon_loader_android.cc4
-rw-r--r--chrome/browser/icon_loader_chromeos.cc4
-rw-r--r--chrome/browser/icon_loader_linux.cc4
-rw-r--r--chrome/browser/icon_loader_mac.mm4
-rw-r--r--chrome/browser/icon_loader_win.cc11
7 files changed, 28 insertions, 5 deletions
diff --git a/chrome/browser/icon_loader.cc b/chrome/browser/icon_loader.cc
index 6e16d0c..f8ea311b 100644
--- a/chrome/browser/icon_loader.cc
+++ b/chrome/browser/icon_loader.cc
@@ -35,7 +35,8 @@ void IconLoader::ReadGroup() {
}
void IconLoader::OnReadGroup() {
- if (!delegate_->OnGroupLoaded(this, group_)) {
+ if (IsIconMutableFromFilepath(file_path_) ||
+ !delegate_->OnGroupLoaded(this, group_)) {
BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
base::Bind(&IconLoader::ReadIcon, this));
}
diff --git a/chrome/browser/icon_loader.h b/chrome/browser/icon_loader.h
index 531a9b7..f6cd8a0 100644
--- a/chrome/browser/icon_loader.h
+++ b/chrome/browser/icon_loader.h
@@ -74,6 +74,9 @@ class IconLoader : public base::RefCountedThreadSafe<IconLoader> {
// is in icon_loader_[platform].cc.
static IconGroupID ReadGroupIDFromFilepath(const base::FilePath& path);
+ // Some icons (exe's on windows) can change as they're loaded.
+ static bool IsIconMutableFromFilepath(const base::FilePath& path);
+
void ReadGroup();
void OnReadGroup();
void ReadIcon();
diff --git a/chrome/browser/icon_loader_android.cc b/chrome/browser/icon_loader_android.cc
index 691745a..5b327a1 100644
--- a/chrome/browser/icon_loader_android.cc
+++ b/chrome/browser/icon_loader_android.cc
@@ -12,6 +12,10 @@ IconGroupID IconLoader::ReadGroupIDFromFilepath(
return 0;
}
+bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
+ return false;
+}
+
void IconLoader::ReadIcon() {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/icon_loader_chromeos.cc b/chrome/browser/icon_loader_chromeos.cc
index 260a45e..2b1f3a1 100644
--- a/chrome/browser/icon_loader_chromeos.cc
+++ b/chrome/browser/icon_loader_chromeos.cc
@@ -185,6 +185,10 @@ IconGroupID IconLoader::ReadGroupIDFromFilepath(
return StringToLowerASCII(filepath.Extension());
}
+bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
+ return false;
+}
+
void IconLoader::ReadIcon() {
static base::LazyInstance<IconMapper>::Leaky icon_mapper =
LAZY_INSTANCE_INITIALIZER;
diff --git a/chrome/browser/icon_loader_linux.cc b/chrome/browser/icon_loader_linux.cc
index 6c9ff68..3860ea0 100644
--- a/chrome/browser/icon_loader_linux.cc
+++ b/chrome/browser/icon_loader_linux.cc
@@ -23,6 +23,10 @@ IconGroupID IconLoader::ReadGroupIDFromFilepath(
return base::nix::GetFileMimeType(filepath);
}
+bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
+ return false;
+}
+
void IconLoader::ReadIcon() {
int size_pixels = 0;
switch (icon_size_) {
diff --git a/chrome/browser/icon_loader_mac.mm b/chrome/browser/icon_loader_mac.mm
index 015dc6b..4a93736 100644
--- a/chrome/browser/icon_loader_mac.mm
+++ b/chrome/browser/icon_loader_mac.mm
@@ -20,6 +20,10 @@ IconGroupID IconLoader::ReadGroupIDFromFilepath(
return filepath.Extension();
}
+bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
+ return false;
+}
+
void IconLoader::ReadIcon() {
NSString* group = base::SysUTF8ToNSString(group_);
NSWorkspace* workspace = [NSWorkspace sharedWorkspace];
diff --git a/chrome/browser/icon_loader_win.cc b/chrome/browser/icon_loader_win.cc
index e686e73..62cb6f0 100644
--- a/chrome/browser/icon_loader_win.cc
+++ b/chrome/browser/icon_loader_win.cc
@@ -18,11 +18,14 @@
// static
IconGroupID IconLoader::ReadGroupIDFromFilepath(
const base::FilePath& filepath) {
+ if (!IsIconMutableFromFilepath(filepath))
+ return filepath.Extension();
+ return filepath.value();
+}
+
+bool IconLoader::IsIconMutableFromFilepath(const base::FilePath& filepath) {
base::FilePath::StringType extension = filepath.Extension();
- if (extension != L".exe" && extension != L".dll" && extension != L".ico")
- return extension;
- else
- return filepath.value();
+ return extension == L".exe" || extension == L".dll" || extension == L".ico";
}
void IconLoader::ReadIcon() {