OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/passwords/manage_passwords_bubble_view.h" | 5 #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" |
6 | 6 |
7 #include "chrome/browser/chrome_notification_types.h" | 7 #include "chrome/browser/chrome_notification_types.h" |
8 #include "chrome/browser/ui/browser.h" | 8 #include "chrome/browser/ui/browser.h" |
9 #include "chrome/browser/ui/browser_finder.h" | 9 #include "chrome/browser/ui/browser_finder.h" |
10 #include "chrome/browser/ui/browser_window.h" | 10 #include "chrome/browser/ui/browser_window.h" |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); | 366 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); |
367 DCHECK(browser); | 367 DCHECK(browser); |
368 DCHECK(browser->window()); | 368 DCHECK(browser->window()); |
369 DCHECK(browser->fullscreen_controller()); | 369 DCHECK(browser->fullscreen_controller()); |
370 | 370 |
371 if (IsShowing()) | 371 if (IsShowing()) |
372 return; | 372 return; |
373 | 373 |
374 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); | 374 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); |
375 bool is_fullscreen = browser_view->IsFullscreen(); | 375 bool is_fullscreen = browser_view->IsFullscreen(); |
376 views::View* anchor_view = is_fullscreen ? | 376 ManagePasswordsIconView* anchor_view = |
377 NULL : browser_view->GetLocationBarView()->manage_passwords_icon_view(); | 377 is_fullscreen |
| 378 ? NULL |
| 379 : browser_view->GetLocationBarView()->manage_passwords_icon_view(); |
378 manage_passwords_bubble_ = new ManagePasswordsBubbleView( | 380 manage_passwords_bubble_ = new ManagePasswordsBubbleView( |
379 web_contents, anchor_view, reason); | 381 web_contents, anchor_view, reason); |
380 | 382 |
381 if (is_fullscreen) { | 383 if (is_fullscreen) { |
382 manage_passwords_bubble_->set_parent_window( | 384 manage_passwords_bubble_->set_parent_window( |
383 web_contents->GetTopLevelNativeWindow()); | 385 web_contents->GetTopLevelNativeWindow()); |
384 } | 386 } |
385 | 387 |
386 views::BubbleDelegateView::CreateBubble(manage_passwords_bubble_); | 388 views::BubbleDelegateView::CreateBubble(manage_passwords_bubble_); |
387 | 389 |
388 // Adjust for fullscreen after creation as it relies on the content size. | 390 // Adjust for fullscreen after creation as it relies on the content size. |
389 if (is_fullscreen) { | 391 if (is_fullscreen) { |
390 manage_passwords_bubble_->AdjustForFullscreen( | 392 manage_passwords_bubble_->AdjustForFullscreen( |
391 browser_view->GetBoundsInScreen()); | 393 browser_view->GetBoundsInScreen()); |
392 } | 394 } |
393 | |
394 manage_passwords_bubble_->GetWidget()->Show(); | 395 manage_passwords_bubble_->GetWidget()->Show(); |
395 manage_passwords_bubble_->SetArrowPaintType(views::BubbleBorder::PAINT_NONE); | 396 manage_passwords_bubble_->SetArrowPaintType(views::BubbleBorder::PAINT_NONE); |
396 } | 397 } |
397 | 398 |
398 // static | 399 // static |
399 void ManagePasswordsBubbleView::CloseBubble() { | 400 void ManagePasswordsBubbleView::CloseBubble() { |
400 if (manage_passwords_bubble_) | 401 if (manage_passwords_bubble_) |
401 manage_passwords_bubble_->Close(); | 402 manage_passwords_bubble_->Close(); |
402 } | 403 } |
403 | 404 |
404 // static | 405 // static |
405 bool ManagePasswordsBubbleView::IsShowing() { | 406 bool ManagePasswordsBubbleView::IsShowing() { |
406 // The bubble may be in the process of closing. | 407 // The bubble may be in the process of closing. |
407 return (manage_passwords_bubble_ != NULL) && | 408 return (manage_passwords_bubble_ != NULL) && |
408 manage_passwords_bubble_->GetWidget()->IsVisible(); | 409 manage_passwords_bubble_->GetWidget()->IsVisible(); |
409 } | 410 } |
410 | 411 |
411 ManagePasswordsBubbleView::ManagePasswordsBubbleView( | 412 ManagePasswordsBubbleView::ManagePasswordsBubbleView( |
412 content::WebContents* web_contents, | 413 content::WebContents* web_contents, |
413 views::View* anchor_view, | 414 ManagePasswordsIconView* anchor_view, |
414 DisplayReason reason) | 415 DisplayReason reason) |
415 : ManagePasswordsBubble(web_contents, reason), | 416 : ManagePasswordsBubble(web_contents, reason), |
416 BubbleDelegateView(anchor_view, | 417 BubbleDelegateView(anchor_view, |
417 anchor_view ? views::BubbleBorder::TOP_RIGHT | 418 anchor_view ? views::BubbleBorder::TOP_RIGHT |
418 : views::BubbleBorder::NONE) { | 419 : views::BubbleBorder::NONE), |
| 420 anchor_view_(anchor_view) { |
419 // Compensate for built-in vertical padding in the anchor view's image. | 421 // Compensate for built-in vertical padding in the anchor view's image. |
420 set_anchor_view_insets(gfx::Insets(2, 0, 2, 0)); | 422 set_anchor_view_insets(gfx::Insets(2, 0, 2, 0)); |
421 set_notify_enter_exit_on_child(true); | 423 set_notify_enter_exit_on_child(true); |
| 424 if (anchor_view) |
| 425 anchor_view->SetActive(true); |
422 } | 426 } |
423 | 427 |
424 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() {} | 428 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() { |
| 429 if (anchor_view_) |
| 430 anchor_view_->SetActive(false); |
| 431 } |
425 | 432 |
426 void ManagePasswordsBubbleView::AdjustForFullscreen( | 433 void ManagePasswordsBubbleView::AdjustForFullscreen( |
427 const gfx::Rect& screen_bounds) { | 434 const gfx::Rect& screen_bounds) { |
428 if (GetAnchorView()) | 435 if (GetAnchorView()) |
429 return; | 436 return; |
430 | 437 |
431 // The bubble's padding from the screen edge, used in fullscreen. | 438 // The bubble's padding from the screen edge, used in fullscreen. |
432 const int kFullscreenPaddingEnd = 20; | 439 const int kFullscreenPaddingEnd = 20; |
433 const size_t bubble_half_width = width() / 2; | 440 const size_t bubble_half_width = width() / 2; |
434 const int x_pos = base::i18n::IsRTL() ? | 441 const int x_pos = base::i18n::IsRTL() ? |
(...skipping 18 matching lines...) Expand all Loading... |
453 else | 460 else |
454 AddChildView(new ManageView(this)); | 461 AddChildView(new ManageView(this)); |
455 } | 462 } |
456 | 463 |
457 void ManagePasswordsBubbleView::WindowClosing() { | 464 void ManagePasswordsBubbleView::WindowClosing() { |
458 // Close() closes the window asynchronously, so by the time we reach here, | 465 // Close() closes the window asynchronously, so by the time we reach here, |
459 // |manage_passwords_bubble_| may have already been reset. | 466 // |manage_passwords_bubble_| may have already been reset. |
460 if (manage_passwords_bubble_ == this) | 467 if (manage_passwords_bubble_ == this) |
461 manage_passwords_bubble_ = NULL; | 468 manage_passwords_bubble_ = NULL; |
462 } | 469 } |
OLD | NEW |