| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" | 5 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/content_setting_bubble_model.h" | 9 #include "chrome/browser/content_setting_bubble_model.h" |
| 10 #include "chrome/browser/content_setting_image_model.h" | 10 #include "chrome/browser/content_setting_image_model.h" |
| 11 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 11 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 preferred_size.set_width(preferred_size.width() + visible_text_size_); | 117 preferred_size.set_width(preferred_size.width() + visible_text_size_); |
| 118 return preferred_size; | 118 return preferred_size; |
| 119 } | 119 } |
| 120 | 120 |
| 121 bool ContentSettingImageView::OnMousePressed(const views::MouseEvent& event) { | 121 bool ContentSettingImageView::OnMousePressed(const views::MouseEvent& event) { |
| 122 // We want to show the bubble on mouse release; that is the standard behavior | 122 // We want to show the bubble on mouse release; that is the standard behavior |
| 123 // for buttons. | 123 // for buttons. |
| 124 return true; | 124 return true; |
| 125 } | 125 } |
| 126 | 126 |
| 127 void ContentSettingImageView::OnMouseReleased(const views::MouseEvent& event, | 127 void ContentSettingImageView::OnMouseReleased(const views::MouseEvent& event) { |
| 128 bool canceled) { | 128 if (!HitTest(event.location())) |
| 129 if (canceled || !HitTest(event.location())) | |
| 130 return; | 129 return; |
| 131 | 130 |
| 132 TabContents* tab_contents = parent_->GetTabContentsWrapper()->tab_contents(); | 131 TabContents* tab_contents = parent_->GetTabContentsWrapper()->tab_contents(); |
| 133 if (!tab_contents) | 132 if (!tab_contents) |
| 134 return; | 133 return; |
| 135 | 134 |
| 136 // Prerender does not have a bubble. | 135 // Prerender does not have a bubble. |
| 137 ContentSettingsType content_settings_type = | 136 ContentSettingsType content_settings_type = |
| 138 content_setting_image_model_->get_content_settings_type(); | 137 content_setting_image_model_->get_content_settings_type(); |
| 139 if (content_settings_type == CONTENT_SETTINGS_TYPE_PRERENDER) | 138 if (content_settings_type == CONTENT_SETTINGS_TYPE_PRERENDER) |
| 140 return; | 139 return; |
| 141 | 140 |
| 142 gfx::Rect screen_bounds(GetImageBounds()); | 141 gfx::Rect screen_bounds(GetImageBounds()); |
| 143 gfx::Point origin(screen_bounds.origin()); | 142 gfx::Point origin(screen_bounds.origin()); |
| 144 views::View::ConvertPointToScreen(this, &origin); | 143 views::View::ConvertPointToScreen(this, &origin); |
| 145 screen_bounds.set_origin(origin); | 144 screen_bounds.set_origin(origin); |
| 146 ContentSettingBubbleContents* bubble_contents = | 145 ContentSettingBubbleContents* bubble_contents = |
| 147 new ContentSettingBubbleContents( | 146 new ContentSettingBubbleContents( |
| 148 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 147 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
| 149 tab_contents, profile_, content_settings_type), | 148 tab_contents, profile_, content_settings_type), |
| 150 profile_, tab_contents); | 149 profile_, tab_contents); |
| 151 info_bubble_ = InfoBubble::Show(GetWidget(), screen_bounds, | 150 info_bubble_ = InfoBubble::Show(GetWidget(), screen_bounds, |
| 152 BubbleBorder::TOP_RIGHT, bubble_contents, this); | 151 BubbleBorder::TOP_RIGHT, bubble_contents, this); |
| 153 bubble_contents->set_info_bubble(info_bubble_); | 152 bubble_contents->set_info_bubble(info_bubble_); |
| 154 } | 153 } |
| 155 | 154 |
| 155 void ContentSettingImageView::InfoBubbleClosing(InfoBubble* info_bubble, |
| 156 bool closed_by_escape) { |
| 157 info_bubble_ = NULL; |
| 158 } |
| 159 |
| 160 bool ContentSettingImageView::CloseOnEscape() { |
| 161 return true; |
| 162 } |
| 163 |
| 164 bool ContentSettingImageView::FadeInOnShow() { |
| 165 return false; |
| 166 } |
| 167 |
| 156 void ContentSettingImageView::VisibilityChanged(View* starting_from, | 168 void ContentSettingImageView::VisibilityChanged(View* starting_from, |
| 157 bool is_visible) { | 169 bool is_visible) { |
| 158 if (!is_visible && info_bubble_) | 170 if (!is_visible && info_bubble_) |
| 159 info_bubble_->Close(); | 171 info_bubble_->Close(); |
| 160 } | 172 } |
| 161 | 173 |
| 162 void ContentSettingImageView::OnPaint(gfx::Canvas* canvas) { | 174 void ContentSettingImageView::OnPaint(gfx::Canvas* canvas) { |
| 163 gfx::Insets current_insets; | 175 gfx::Insets current_insets; |
| 164 if (border()) | 176 if (border()) |
| 165 border()->GetInsets(¤t_insets); | 177 border()->GetInsets(¤t_insets); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 kBoxCornerRadius, paint); | 223 kBoxCornerRadius, paint); |
| 212 SkPaint outer_paint; | 224 SkPaint outer_paint; |
| 213 outer_paint.setStyle(SkPaint::kStroke_Style); | 225 outer_paint.setStyle(SkPaint::kStroke_Style); |
| 214 outer_paint.setColor(kBorderColor); | 226 outer_paint.setColor(kBorderColor); |
| 215 color_rect.inset(SkIntToScalar(kEdgeThickness), | 227 color_rect.inset(SkIntToScalar(kEdgeThickness), |
| 216 SkIntToScalar(kEdgeThickness)); | 228 SkIntToScalar(kEdgeThickness)); |
| 217 canvas->AsCanvasSkia()->drawRoundRect(color_rect, kBoxCornerRadius, | 229 canvas->AsCanvasSkia()->drawRoundRect(color_rect, kBoxCornerRadius, |
| 218 kBoxCornerRadius, outer_paint); | 230 kBoxCornerRadius, outer_paint); |
| 219 } | 231 } |
| 220 | 232 |
| 221 void ContentSettingImageView::InfoBubbleClosing(InfoBubble* info_bubble, | |
| 222 bool closed_by_escape) { | |
| 223 info_bubble_ = NULL; | |
| 224 } | |
| 225 | |
| 226 bool ContentSettingImageView::CloseOnEscape() { | |
| 227 return true; | |
| 228 } | |
| 229 | |
| 230 bool ContentSettingImageView::FadeInOnShow() { | |
| 231 return false; | |
| 232 } | |
| 233 | |
| 234 void ContentSettingImageView::AnimateToState(double state) { | 233 void ContentSettingImageView::AnimateToState(double state) { |
| 235 if (state >= 1.0) { | 234 if (state >= 1.0) { |
| 236 // Animaton is over, clear the variables. | 235 // Animaton is over, clear the variables. |
| 237 animation_in_progress_ = false; | 236 animation_in_progress_ = false; |
| 238 visible_text_size_ = 0; | 237 visible_text_size_ = 0; |
| 239 } else if (state < kAnimatingFraction) { | 238 } else if (state < kAnimatingFraction) { |
| 240 visible_text_size_ = static_cast<int>(text_size_ * state / | 239 visible_text_size_ = static_cast<int>(text_size_ * state / |
| 241 kAnimatingFraction); | 240 kAnimatingFraction); |
| 242 } else if (state > (1.0 - kAnimatingFraction)) { | 241 } else if (state > (1.0 - kAnimatingFraction)) { |
| 243 visible_text_size_ = static_cast<int>(text_size_ * (1.0 - state) / | 242 visible_text_size_ = static_cast<int>(text_size_ * (1.0 - state) / |
| 244 kAnimatingFraction); | 243 kAnimatingFraction); |
| 245 } else { | 244 } else { |
| 246 visible_text_size_ = text_size_; | 245 visible_text_size_ = text_size_; |
| 247 } | 246 } |
| 248 parent_->Layout(); | 247 parent_->Layout(); |
| 249 parent_->SchedulePaint(); | 248 parent_->SchedulePaint(); |
| 250 } | 249 } |
| 251 | 250 |
| OLD | NEW |