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

Side by Side Diff: ceee/ie/plugin/bho/infobar_window.cc

Issue 4991002: New unittests for infobar. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 10 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // Implementation of the manager for infobar windows. 5 // Implementation of the manager for infobar windows.
6 6
7 #include "ceee/ie/plugin/bho/infobar_window.h" 7 #include "ceee/ie/plugin/bho/infobar_window.h"
8 8
9 #include <atlapp.h> 9 #include <atlapp.h>
10 #include <atlcrack.h> 10 #include <atlcrack.h>
(...skipping 23 matching lines...) Expand all
34 DCHECK(delegate); 34 DCHECK(delegate);
35 return NULL == delegate ? NULL : new InfobarWindow(type, delegate); 35 return NULL == delegate ? NULL : new InfobarWindow(type, delegate);
36 } 36 }
37 37
38 InfobarWindow::InfobarWindow(InfobarType type, Delegate* delegate) 38 InfobarWindow::InfobarWindow(InfobarType type, Delegate* delegate)
39 : type_(type), 39 : type_(type),
40 delegate_(delegate), 40 delegate_(delegate),
41 show_(false), 41 show_(false),
42 target_height_(1), 42 target_height_(1),
43 current_height_(1), 43 current_height_(1),
44 sliding_infobar_(false) { 44 sliding_infobar_(false),
45 timer_id_(0) {
45 DCHECK(delegate); 46 DCHECK(delegate);
46 } 47 }
47 48
48 InfobarWindow::~InfobarWindow() { 49 InfobarWindow::~InfobarWindow() {
49 Reset(); 50 Reset();
50 51
51 if (IsWindow()) { 52 if (IsWindow()) {
52 DestroyWindow(); 53 DestroyWindow();
53 } else { 54 } else {
54 NOTREACHED() << "Infobar window was not successfully created."; 55 NOTREACHED() << "Infobar window was not successfully created.";
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 target_height_ = 1; 159 target_height_ = 1;
159 } 160 }
160 } else { 161 } else {
161 target_height_ = 1; 162 target_height_ = 1;
162 } 163 }
163 164
164 if (!slide || !show) { 165 if (!slide || !show) {
165 current_height_ = target_height_; 166 current_height_ = target_height_;
166 167
167 if (sliding_infobar_) { 168 if (sliding_infobar_) {
168 KillTimer(kInfobarSlidingTimerId); 169 KillTimer(timer_id_);
169 sliding_infobar_ = false; 170 sliding_infobar_ = false;
170 } 171 }
171 } else { 172 } else {
172 // If the infobar is visible and sliding effect is requested, we need to 173 // If the infobar is visible and sliding effect is requested, we need to
173 // start expanding/shrinking the infobar according to its current height. 174 // start expanding/shrinking the infobar according to its current height.
174 current_height_ = CalculateNextHeight(); 175 current_height_ = CalculateNextHeight();
175 176
176 if (!sliding_infobar_) { 177 if (!sliding_infobar_) {
177 SetTimer(kInfobarSlidingTimerId, kInfobarSlidingTimerIntervalMs, NULL); 178 // Set timer and store its id (it could be different from the passed one).
179 timer_id_ = SetTimer(kInfobarSlidingTimerId,
180 kInfobarSlidingTimerIntervalMs, NULL);
178 sliding_infobar_ = true; 181 sliding_infobar_ = true;
179 } 182 }
180 } 183 }
181 184
182 UpdateLayout(); 185 UpdateLayout();
183 } 186 }
184 187
185 int InfobarWindow::CalculateNextHeight() { 188 int InfobarWindow::CalculateNextHeight() {
186 if (current_height_ < target_height_) { 189 if (current_height_ < target_height_) {
187 return std::min(current_height_ + kInfobarSlidingStep, target_height_); 190 return std::min(current_height_ + kInfobarSlidingStep, target_height_);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 return E_POINTER; 254 return E_POINTER;
252 255
253 // Set the size to 0 that means we do not know it. 256 // Set the size to 0 that means we do not know it.
254 // TODO(vadimb@google.com): Find how to get the content size from the CF. 257 // TODO(vadimb@google.com): Find how to get the content size from the CF.
255 size->cx = 0; 258 size->cx = 0;
256 size->cy = 0; 259 size->cy = 0;
257 return S_OK; 260 return S_OK;
258 } 261 }
259 262
260 LRESULT InfobarWindow::OnTimer(UINT_PTR nIDEvent) { 263 LRESULT InfobarWindow::OnTimer(UINT_PTR nIDEvent) {
261 DCHECK(nIDEvent == kInfobarSlidingTimerId); 264 DCHECK(nIDEvent == timer_id_);
262 if (show_ && sliding_infobar_ && current_height_ != target_height_) { 265 if (show_ && sliding_infobar_ && current_height_ != target_height_) {
263 current_height_ = CalculateNextHeight(); 266 current_height_ = CalculateNextHeight();
264 UpdateLayout(); 267 UpdateLayout();
265 } else if (sliding_infobar_) { 268 } else if (sliding_infobar_) {
266 KillTimer(kInfobarSlidingTimerId); 269 KillTimer(timer_id_);
267 sliding_infobar_ = false; 270 sliding_infobar_ = false;
268 } 271 }
269 272
270 return S_OK; 273 return S_OK;
271 } 274 }
272 275
273 LRESULT InfobarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) { 276 LRESULT InfobarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) {
274 InitializingCoClass<InfobarBrowserWindow>::CreateInitialized( 277 InitializingCoClass<InfobarBrowserWindow>::CreateInitialized(
275 CComBSTR(url_.c_str()), this, &chrome_frame_host_); 278 CComBSTR(url_.c_str()), this, &chrome_frame_host_);
276 279
(...skipping 26 matching lines...) Expand all
303 306
304 void InfobarWindow::AdjustSize() { 307 void InfobarWindow::AdjustSize() {
305 if (NULL != chrome_frame_host_) { 308 if (NULL != chrome_frame_host_) {
306 CRect rect; 309 CRect rect;
307 GetClientRect(&rect); 310 GetClientRect(&rect);
308 chrome_frame_host_->SetWindowSize(rect.Width(), rect.Height()); 311 chrome_frame_host_->SetWindowSize(rect.Width(), rect.Height());
309 } 312 }
310 } 313 }
311 314
312 } // namespace infobar_api 315 } // namespace infobar_api
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698