Index: chrome/browser/ui/cocoa/browser_window_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm |
index 1c875c6f7327da2e15e2576d9baac8267edfe507..83efa50698b76a3cdca466549643db4d90b2e334 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm |
@@ -14,6 +14,7 @@ |
#include "chrome/browser/bookmarks/bookmark_utils.h" |
#include "chrome/browser/download/download_shelf.h" |
#include "chrome/browser/extensions/tab_helper.h" |
+#include "chrome/browser/password_manager/password_manager.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
@@ -25,6 +26,7 @@ |
#import "chrome/browser/ui/cocoa/browser/avatar_button_controller.h" |
#import "chrome/browser/ui/cocoa/browser/avatar_menu_bubble_controller.h" |
#import "chrome/browser/ui/cocoa/browser/edit_search_engine_cocoa_controller.h" |
+#import "chrome/browser/ui/cocoa/browser/password_generation_bubble_controller.h" |
#import "chrome/browser/ui/cocoa/browser_window_controller.h" |
#import "chrome/browser/ui/cocoa/browser_window_utils.h" |
#import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" |
@@ -47,6 +49,7 @@ |
#include "content/public/browser/notification_details.h" |
#include "content/public/browser/notification_source.h" |
#include "content/public/browser/web_contents.h" |
+#include "content/public/common/password_form.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util_mac.h" |
@@ -642,8 +645,9 @@ NSWindow* BrowserWindowCocoa::window() const { |
return [controller_ window]; |
} |
-void BrowserWindowCocoa::ShowAvatarBubble(WebContents* web_contents, |
- const gfx::Rect& rect) { |
+NSPoint BrowserWindowCocoa::GetPointForBubble( |
+ content::WebContents* web_contents, |
+ const gfx::Rect& rect) const { |
Scott Hess - ex-Googler
2012/11/17 01:22:41
This seems to only need the passed parameters - su
Garrett Casto
2012/11/19 22:17:42
Done.
|
NSView* view = web_contents->GetNativeView(); |
NSRect bounds = [view bounds]; |
NSPoint point; |
@@ -652,6 +656,12 @@ void BrowserWindowCocoa::ShowAvatarBubble(WebContents* web_contents, |
point.y = NSMaxY(bounds) - rect.bottom(); |
point = [view convertPoint:point toView:nil]; |
point = [[view window] convertBaseToScreen:point]; |
+ return point; |
+} |
+ |
+void BrowserWindowCocoa::ShowAvatarBubble(WebContents* web_contents, |
+ const gfx::Rect& rect) { |
+ NSPoint point = GetPointForBubble(web_contents, rect); |
// |menu| will automatically release itself on close. |
AvatarMenuBubbleController* menu = |
@@ -664,3 +674,24 @@ void BrowserWindowCocoa::ShowAvatarBubble(WebContents* web_contents, |
void BrowserWindowCocoa::ShowAvatarBubbleFromAvatarButton() { |
[[controller_ avatarButtonController] showAvatarBubble]; |
} |
+ |
+void BrowserWindowCocoa::ShowPasswordGenerationBubble( |
+ const gfx::Rect& rect, |
+ const content::PasswordForm& form, |
+ autofill::PasswordGenerator* password_generator) { |
+ TabContents* tab_contents = chrome::GetActiveTabContents(browser_); |
+ WebContents* web_contents = tab_contents->web_contents(); |
+ NSPoint point = GetPointForBubble(web_contents, rect); |
+ // We want to point to the middle of the rect instead of the right side. |
+ point.x -= rect.width()/2; |
Scott Hess - ex-Googler
2012/11/17 01:22:41
This is expressing a bit more knowledge of the int
Garrett Casto
2012/11/19 22:17:42
Done.
Garrett Casto
2012/11/19 22:17:42
Done.
|
+ |
+ PasswordGenerationBubbleController* controller = |
+ [[PasswordGenerationBubbleController alloc] |
+ initWithBrowser:browser_ |
+ anchoredAt:point |
+ renderViewHost:web_contents->GetRenderViewHost() |
+ passwordManager:PasswordManager::FromWebContents(web_contents) |
+ usingGenerator:password_generator |
+ forForm:form]; |
+ [controller showWindow:nil]; |
+} |