| 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 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 parent_->Close(); | 427 parent_->Close(); |
| 428 } | 428 } |
| 429 | 429 |
| 430 // ManagePasswordsBubbleView -------------------------------------------------- | 430 // ManagePasswordsBubbleView -------------------------------------------------- |
| 431 | 431 |
| 432 // static | 432 // static |
| 433 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ = | 433 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ = |
| 434 NULL; | 434 NULL; |
| 435 | 435 |
| 436 // static | 436 // static |
| 437 const ManagePasswordsBubbleView* ManagePasswordsBubbleView::Bubble() { |
| 438 return ManagePasswordsBubbleView::manage_passwords_bubble_; |
| 439 } |
| 440 |
| 441 // static |
| 437 void ManagePasswordsBubbleView::ShowBubble(content::WebContents* web_contents, | 442 void ManagePasswordsBubbleView::ShowBubble(content::WebContents* web_contents, |
| 438 DisplayReason reason) { | 443 DisplayReason reason) { |
| 439 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); | 444 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); |
| 440 DCHECK(browser); | 445 DCHECK(browser); |
| 441 DCHECK(browser->window()); | 446 DCHECK(browser->window()); |
| 442 DCHECK(browser->fullscreen_controller()); | 447 DCHECK(browser->fullscreen_controller()); |
| 443 | 448 |
| 444 if (IsShowing()) | 449 if (IsShowing()) |
| 445 return; | 450 return; |
| 446 | 451 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 460 | 465 |
| 461 views::BubbleDelegateView::CreateBubble(manage_passwords_bubble_); | 466 views::BubbleDelegateView::CreateBubble(manage_passwords_bubble_); |
| 462 | 467 |
| 463 // Adjust for fullscreen after creation as it relies on the content size. | 468 // Adjust for fullscreen after creation as it relies on the content size. |
| 464 if (is_fullscreen) { | 469 if (is_fullscreen) { |
| 465 manage_passwords_bubble_->AdjustForFullscreen( | 470 manage_passwords_bubble_->AdjustForFullscreen( |
| 466 browser_view->GetBoundsInScreen()); | 471 browser_view->GetBoundsInScreen()); |
| 467 } | 472 } |
| 468 manage_passwords_bubble_->GetWidget()->Show(); | 473 manage_passwords_bubble_->GetWidget()->Show(); |
| 469 manage_passwords_bubble_->SetArrowPaintType(views::BubbleBorder::PAINT_NONE); | 474 manage_passwords_bubble_->SetArrowPaintType(views::BubbleBorder::PAINT_NONE); |
| 475 // set_use_focusless(true) has adverse effect on Windows. |
| 476 // 1) The bubble can't be the active window (which is not desired behavior). |
| 477 // 2) The bubble doesn't get WM_LBUTTONDOWN event. Therefore, all the buttons |
| 478 // get stuck. |
| 479 // TODO(vasilii): remove this line once the bug in infrastructure is resolved. |
| 480 manage_passwords_bubble_->set_use_focusless(false); |
| 470 } | 481 } |
| 471 | 482 |
| 472 // static | 483 // static |
| 473 void ManagePasswordsBubbleView::CloseBubble() { | 484 void ManagePasswordsBubbleView::CloseBubble() { |
| 474 if (manage_passwords_bubble_) | 485 if (manage_passwords_bubble_) |
| 475 manage_passwords_bubble_->Close(); | 486 manage_passwords_bubble_->Close(); |
| 476 } | 487 } |
| 477 | 488 |
| 478 // static | 489 // static |
| 479 bool ManagePasswordsBubbleView::IsShowing() { | 490 bool ManagePasswordsBubbleView::IsShowing() { |
| 480 // The bubble may be in the process of closing. | 491 // The bubble may be in the process of closing. |
| 481 return (manage_passwords_bubble_ != NULL) && | 492 return (manage_passwords_bubble_ != NULL) && |
| 482 manage_passwords_bubble_->GetWidget()->IsVisible(); | 493 manage_passwords_bubble_->GetWidget()->IsVisible(); |
| 483 } | 494 } |
| 484 | 495 |
| 485 ManagePasswordsBubbleView::ManagePasswordsBubbleView( | 496 ManagePasswordsBubbleView::ManagePasswordsBubbleView( |
| 486 content::WebContents* web_contents, | 497 content::WebContents* web_contents, |
| 487 ManagePasswordsIconView* anchor_view, | 498 ManagePasswordsIconView* anchor_view, |
| 488 DisplayReason reason) | 499 DisplayReason reason) |
| 489 : ManagePasswordsBubble(web_contents, reason), | 500 : ManagePasswordsBubble(web_contents, reason), |
| 490 BubbleDelegateView(anchor_view, | 501 BubbleDelegateView(anchor_view, |
| 491 anchor_view ? views::BubbleBorder::TOP_RIGHT | 502 anchor_view ? views::BubbleBorder::TOP_RIGHT |
| 492 : views::BubbleBorder::NONE), | 503 : views::BubbleBorder::NONE), |
| 493 anchor_view_(anchor_view), | 504 anchor_view_(anchor_view), |
| 494 never_save_passwords_(false) { | 505 never_save_passwords_(false) { |
| 495 // Compensate for built-in vertical padding in the anchor view's image. | 506 // Compensate for built-in vertical padding in the anchor view's image. |
| 496 set_anchor_view_insets(gfx::Insets(2, 0, 2, 0)); | 507 set_anchor_view_insets(gfx::Insets(2, 0, 2, 0)); |
| 497 set_notify_enter_exit_on_child(true); | 508 // Don't focus by default. |
| 509 set_use_focusless(true); |
| 498 if (anchor_view) | 510 if (anchor_view) |
| 499 anchor_view->SetActive(true); | 511 anchor_view->SetActive(true); |
| 500 } | 512 } |
| 501 | 513 |
| 502 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() { | 514 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() { |
| 503 if (anchor_view_) | 515 if (anchor_view_) |
| 504 anchor_view_->SetActive(false); | 516 anchor_view_->SetActive(false); |
| 505 } | 517 } |
| 506 | 518 |
| 507 void ManagePasswordsBubbleView::AdjustForFullscreen( | 519 void ManagePasswordsBubbleView::AdjustForFullscreen( |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 | 576 |
| 565 void ManagePasswordsBubbleView::NotifyConfirmedNeverForThisSite() { | 577 void ManagePasswordsBubbleView::NotifyConfirmedNeverForThisSite() { |
| 566 model()->OnNeverForThisSiteClicked(); | 578 model()->OnNeverForThisSiteClicked(); |
| 567 Close(); | 579 Close(); |
| 568 } | 580 } |
| 569 | 581 |
| 570 void ManagePasswordsBubbleView::NotifyUndoNeverForThisSite() { | 582 void ManagePasswordsBubbleView::NotifyUndoNeverForThisSite() { |
| 571 never_save_passwords_ = false; | 583 never_save_passwords_ = false; |
| 572 Refresh(); | 584 Refresh(); |
| 573 } | 585 } |
| OLD | NEW |