summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm9
-rw-r--r--chrome/browser/ui/gtk/browser_toolbar_gtk.cc4
-rw-r--r--chrome/browser/ui/toolbar/wrench_menu_model.cc25
-rw-r--r--chrome/browser/ui/views/toolbar_view.cc27
-rw-r--r--chrome/browser/ui/views/toolbar_view.h4
-rw-r--r--chrome/browser/upgrade_detector.cc25
-rw-r--r--chrome/browser/upgrade_detector.h16
7 files changed, 56 insertions, 54 deletions
diff --git a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
index 7aa4def..8c89430 100644
--- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
+++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
@@ -555,10 +555,13 @@ class NotificationBridge : public NotificationObserver {
}
- (void)badgeWrenchMenuIfNeeded {
- if (UpgradeDetector::GetInstance()->notify_upgrade())
- [[wrenchButton_ cell] setOverlayImageID:IDR_UPDATE_BADGE];
- else
+ if (UpgradeDetector::GetInstance()->notify_upgrade()) {
+ [[wrenchButton_ cell]
+ setOverlayImageID:UpgradeDetector::GetInstance()->GetIconResourceID(
+ UpgradeDetector::UPGRADE_ICON_TYPE_BADGE)];
+ } else {
[[wrenchButton_ cell] setOverlayImageID:0];
+ }
}
- (void)prefChanged:(std::string*)prefName {
diff --git a/chrome/browser/ui/gtk/browser_toolbar_gtk.cc b/chrome/browser/ui/gtk/browser_toolbar_gtk.cc
index 555c803..18a2b54 100644
--- a/chrome/browser/ui/gtk/browser_toolbar_gtk.cc
+++ b/chrome/browser/ui/gtk/browser_toolbar_gtk.cc
@@ -637,7 +637,9 @@ gboolean BrowserToolbarGtk::OnWrenchMenuButtonExpose(GtkWidget* sender,
GdkEventExpose* expose) {
const SkBitmap* badge = NULL;
if (UpgradeDetector::GetInstance()->notify_upgrade()) {
- badge = theme_service_->GetBitmapNamed(IDR_UPDATE_BADGE);
+ badge = theme_service_->GetBitmapNamed(
+ UpgradeDetector::GetInstance()->GetIconResourceID(
+ UpgradeDetector::UPGRADE_ICON_TYPE_BADGE));
} else {
return FALSE;
}
diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc
index 2d869c8..9551932 100644
--- a/chrome/browser/ui/toolbar/wrench_menu_model.cc
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc
@@ -271,28 +271,15 @@ string16 WrenchMenuModel::GetLabelForCommandId(int command_id) const {
bool WrenchMenuModel::GetIconForCommandId(int command_id,
SkBitmap* icon) const {
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance();
switch (command_id) {
case IDC_UPGRADE_DIALOG: {
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- int resource_id;
- UpgradeDetector::UpgradeNotificationAnnoyanceLevel stage =
- UpgradeDetector::GetInstance()->upgrade_notification_stage();
- switch (stage) {
- case UpgradeDetector::UPGRADE_ANNOYANCE_SEVERE:
- resource_id = IDR_UPDATE_MENU4;
- break;
- case UpgradeDetector::UPGRADE_ANNOYANCE_HIGH:
- resource_id = IDR_UPDATE_MENU3;
- break;
- case UpgradeDetector::UPGRADE_ANNOYANCE_ELEVATED:
- resource_id = IDR_UPDATE_MENU2;
- break;
- default:
- resource_id = IDR_UPDATE_MENU;
- break;
+ if (UpgradeDetector::GetInstance()->notify_upgrade()) {
+ *icon = rb.GetNativeImageNamed(
+ UpgradeDetector::GetInstance()->GetIconResourceID(
+ UpgradeDetector::UPGRADE_ICON_TYPE_MENU_ICON));
+ return true;
}
- *icon = *rb.GetBitmapNamed(resource_id);
- break;
}
default:
break;
diff --git a/chrome/browser/ui/views/toolbar_view.cc b/chrome/browser/ui/views/toolbar_view.cc
index 20c4715..58d35f5 100644
--- a/chrome/browser/ui/views/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar_view.cc
@@ -111,10 +111,8 @@ ToolbarView::ToolbarView(Browser* browser)
IDR_LOCATIONBG_POPUPMODE_EDGE);
}
- if (!IsUpgradeRecommended()) {
- registrar_.Add(this, NotificationType::UPGRADE_RECOMMENDED,
- NotificationService::AllSources());
- }
+ registrar_.Add(this, NotificationType::UPGRADE_RECOMMENDED,
+ NotificationService::AllSources());
registrar_.Add(this, NotificationType::MODULE_INCOMPATIBILITY_BADGE_CHANGE,
NotificationService::AllSources());
}
@@ -619,23 +617,6 @@ bool ToolbarView::IsUpgradeRecommended() {
#endif
}
-int ToolbarView::GetUpgradeRecommendedBadge() const {
-#if defined(OS_CHROMEOS)
- return IDR_UPDATE_BADGE;
-#else
- switch (UpgradeDetector::GetInstance()->upgrade_notification_stage()) {
- case UpgradeDetector::UPGRADE_ANNOYANCE_SEVERE:
- return IDR_UPDATE_BADGE4;
- case UpgradeDetector::UPGRADE_ANNOYANCE_HIGH:
- return IDR_UPDATE_BADGE3;
- case UpgradeDetector::UPGRADE_ANNOYANCE_ELEVATED:
- return IDR_UPDATE_BADGE2;
- default:
- return IDR_UPDATE_BADGE;
- }
-#endif
-}
-
bool ToolbarView::ShouldShowIncompatibilityWarning() {
#if defined(OS_WIN)
EnumerateModulesModel* loaded_modules = EnumerateModulesModel::GetInstance();
@@ -752,7 +733,9 @@ SkBitmap ToolbarView::GetAppMenuIcon(views::CustomButton::ButtonState state) {
// Only one badge can be active at any given time. The Upgrade notification
// is deemed most important, then the DLL conflict badge.
if (IsUpgradeRecommended()) {
- badge = *tp->GetBitmapNamed(GetUpgradeRecommendedBadge());
+ badge = *tp->GetBitmapNamed(
+ UpgradeDetector::GetInstance()->GetIconResourceID(
+ UpgradeDetector::UPGRADE_ICON_TYPE_BADGE));
} else if (ShouldShowIncompatibilityWarning()) {
#if defined(OS_WIN)
if (!was_showing)
diff --git a/chrome/browser/ui/views/toolbar_view.h b/chrome/browser/ui/views/toolbar_view.h
index 53616fc..a5a6c8e 100644
--- a/chrome/browser/ui/views/toolbar_view.h
+++ b/chrome/browser/ui/views/toolbar_view.h
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_VIEW_H_
#pragma once
+#include <set>
#include <vector>
#include "base/memory/ref_counted.h"
@@ -144,9 +145,6 @@ class ToolbarView : public AccessiblePaneView,
// Returns true if we should show the upgrade recommended dot.
bool IsUpgradeRecommended();
- // Retrieve which badge we should show when recommending an upgrade.
- int GetUpgradeRecommendedBadge() const;
-
// Returns true if we should show the background page badge.
bool ShouldShowBackgroundPageBadge();
diff --git a/chrome/browser/upgrade_detector.cc b/chrome/browser/upgrade_detector.cc
index df2fbb0..c15c8d5 100644
--- a/chrome/browser/upgrade_detector.cc
+++ b/chrome/browser/upgrade_detector.cc
@@ -23,6 +23,8 @@
#include "content/browser/browser_thread.h"
#include "content/common/notification_service.h"
#include "content/common/notification_type.h"
+#include "grit/theme_resources.h"
+#include "ui/base/resource/resource_bundle.h"
#if defined(OS_WIN)
#include "chrome/installer/util/install_util.h"
@@ -44,7 +46,7 @@ const int kCheckForUpgradeMs = 2 * 60 * 60 * 1000; // 2 hours.
const int kNotifyCycleTimeMs = 20 * 60 * 1000; // 20 minutes.
// Same as kNotifyCycleTimeMs but only used during testing.
-const int kNotifyCycleTimeForTestingMs = 5000; // 5 seconds.
+const int kNotifyCycleTimeForTestingMs = 500; // Half a second.
std::string CmdLineInterval() {
const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
@@ -155,6 +157,22 @@ void UpgradeDetector::RegisterPrefs(PrefService* prefs) {
prefs->RegisterBooleanPref(prefs::kRestartLastSessionOnShutdown, false);
}
+int UpgradeDetector::GetIconResourceID(UpgradeNotificationIconType type) {
+ bool badge = type == UPGRADE_ICON_TYPE_BADGE;
+ switch (upgrade_notification_stage_) {
+ case UPGRADE_ANNOYANCE_SEVERE:
+ return badge ? IDR_UPDATE_BADGE4 : IDR_UPDATE_MENU4;
+ case UPGRADE_ANNOYANCE_HIGH:
+ return badge ? IDR_UPDATE_BADGE3 : IDR_UPDATE_MENU3;
+ case UPGRADE_ANNOYANCE_ELEVATED:
+ return badge ? IDR_UPDATE_BADGE2 : IDR_UPDATE_MENU2;
+ case UPGRADE_ANNOYANCE_LOW:
+ return badge ? IDR_UPDATE_BADGE : IDR_UPDATE_MENU;
+ default:
+ return 0;
+ }
+}
+
UpgradeDetector::UpgradeDetector()
: ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)),
is_unstable_channel_(false),
@@ -227,10 +245,10 @@ void UpgradeDetector::NotifyOnUpgrade() {
std::string interval = CmdLineInterval();
// A command line interval implies testing, which we'll make more convenient
- // by switching to minutes of waiting instead of days between flipping
+ // by switching to seconds of waiting instead of days between flipping
// severity. This works in conjunction with the similar interval.empty()
// check below.
- int time_passed = interval.empty() ? delta.InHours() : delta.InMinutes();
+ int64 time_passed = interval.empty() ? delta.InHours() : delta.InSeconds();
if (is_unstable_channel_) {
// There's only one threat level for unstable channels like dev and
@@ -248,6 +266,7 @@ void UpgradeDetector::NotifyOnUpgrade() {
}
} else {
const int kMultiplier = interval.empty() ? 24 : 1;
+ // 14 days when not testing, otherwise 14 seconds.
const int kSevereThreshold = 14 * kMultiplier;
const int kHighThreshold = 7 * kMultiplier;
const int kElevatedThreshold = 4 * kMultiplier;
diff --git a/chrome/browser/upgrade_detector.h b/chrome/browser/upgrade_detector.h
index 3188efb..00227d5 100644
--- a/chrome/browser/upgrade_detector.h
+++ b/chrome/browser/upgrade_detector.h
@@ -7,6 +7,7 @@
#pragma once
#include "base/timer.h"
+#include "ui/gfx/image.h"
template <typename T> struct DefaultSingletonTraits;
class PrefService;
@@ -32,6 +33,12 @@ class UpgradeDetector {
UPGRADE_ANNOYANCE_SEVERE, // Orange.
};
+ // The two types of icons we know about.
+ enum UpgradeNotificationIconType {
+ UPGRADE_ICON_TYPE_BADGE = 0, // For overlay badging of the wrench menu.
+ UPGRADE_ICON_TYPE_MENU_ICON, // For showing in the wrench menu.
+ };
+
// Returns the singleton instance.
static UpgradeDetector* GetInstance();
@@ -41,9 +48,12 @@ class UpgradeDetector {
bool notify_upgrade() { return notify_upgrade_; }
- UpgradeNotificationAnnoyanceLevel upgrade_notification_stage() const {
- return upgrade_notification_stage_;
- }
+ // Retrieves the right icon ID based on the degree of severity (see
+ // UpgradeNotificationAnnoyanceLevel, each level has an an accompanying icon
+ // to go with it). |type| determines which class of icons the caller wants,
+ // either an icon appropriate for badging the wrench menu or one to display
+ // within the wrench menu.
+ int GetIconResourceID(UpgradeNotificationIconType type);
private:
friend struct DefaultSingletonTraits<UpgradeDetector>;