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

Unified Diff: chrome/browser/views/download_item_view.h

Issue 6043: Added dangerous download prompting. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 2 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
Index: chrome/browser/views/download_item_view.h
===================================================================
--- chrome/browser/views/download_item_view.h (revision 2758)
+++ chrome/browser/views/download_item_view.h (working copy)
@@ -26,13 +26,17 @@
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/views/event.h"
+#include "chrome/views/native_button.h"
#include "chrome/views/view.h"
-#include "chrome/views/label.h"
+namespace ChromeViews {
+ class Label;
+}
class DownloadShelfView;
class SkBitmap;
-class DownloadItemView : public ChromeViews::View,
+class DownloadItemView : public ChromeViews::NativeButton::Listener,
+ public ChromeViews::View,
public DownloadItem::Observer,
public AnimationDelegate {
public:
@@ -56,6 +60,7 @@
virtual void OnDownloadUpdated(DownloadItem* download);
// View overrides
+ virtual void Layout();
virtual void Paint(ChromeCanvas* canvas);
virtual void GetPreferredSize(CSize *out);
virtual void OnMouseExited(const ChromeViews::MouseEvent& event);
@@ -64,7 +69,11 @@
virtual void OnMouseReleased(const ChromeViews::MouseEvent& event,
bool canceled);
virtual bool OnMouseDragged(const ChromeViews::MouseEvent& event);
+ virtual void DidChangeBounds(const CRect& previous, const CRect& current);
+ // NativeButton::Listener implementation.
+ virtual void ButtonPressed(ChromeViews::NativeButton* sender);
+
// AnimationDelegate implementation.
virtual void AnimationProgressed(const Animation* animation);
@@ -81,6 +90,7 @@
NORMAL = 0,
HOT,
PUSHED,
+ DANGEROUS
};
// The image set associated with the part containing the icon and text.
@@ -121,14 +131,33 @@
// Sets the state and triggers a repaint.
void SetState(State body_state, State drop_down_state);
+ // Whether we are in the dangerous mode.
+ bool IsDangerousMode() { return body_state_ == DANGEROUS; }
+
+ // Reverts from dangerous mode to normal download mode.
+ void ClearDangerousMode();
+
+ // Sets |size| with the size of the Save and Discard buttons (they have the
+ // same size).
+ void GetButtonSize(CSize* size);
+
+ // Sizes the dangerous download label to a minimum width available using 2
+ // lines. The size is computed only the first time this method is invoked
+ // and simply returned on subsequent calls.
+ void SizeLabelToMinWidth();
+
// The different images used for the background.
BodyImageSet normal_body_image_set_;
BodyImageSet hot_body_image_set_;
BodyImageSet pushed_body_image_set_;
+ BodyImageSet dangerous_mode_body_image_set_;
DropDownImageSet normal_drop_down_image_set_;
DropDownImageSet hot_drop_down_image_set_;
DropDownImageSet pushed_drop_down_image_set_;
+ // The warning icon showns for dangerous downloads.
+ SkBitmap* warning_icon_;
+
// The model we query for display information
DownloadItem* download_;
@@ -136,7 +165,6 @@
DownloadShelfView* parent_;
// Elements of our particular download
- std::wstring file_name_;
std::wstring status_text_;
bool show_status_text_;
@@ -189,6 +217,19 @@
// Progress animation
base::RepeatingTimer<DownloadItemView> progress_timer_;
+ // Dangerous mode buttons.
+ ChromeViews::NativeButton* save_button_;
+ ChromeViews::NativeButton* discard_button_;
+
+ // Dangerous mode label.
+ ChromeViews::Label* dangerous_download_label_;
+
+ // Whether the dangerous mode label has been sized yet.
+ bool dangerous_download_label_sized_;
+
+ // The size of the buttons. Cached so animation works when hidden.
+ CSize cached_button_size_;
+
DISALLOW_EVIL_CONSTRUCTORS(DownloadItemView);
};

Powered by Google App Engine
This is Rietveld 408576698