| Index: chrome/browser/ui/gtk/password_generation_bubble_gtk.cc
|
| diff --git a/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc b/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc
|
| index e43e81a48135251020a8bfdd4ad5d95aabbc2dbf..6ceb0f16c07936a62f972102c24dd10825621ddb 100644
|
| --- a/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc
|
| +++ b/chrome/browser/ui/gtk/password_generation_bubble_gtk.cc
|
| @@ -5,11 +5,19 @@
|
| #include "chrome/browser/ui/gtk/password_generation_bubble_gtk.h"
|
|
|
| #include "base/utf_string_conversions.h"
|
| +#include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_list.h"
|
| #include "chrome/browser/ui/gtk/bubble/bubble_gtk.h"
|
| +#include "chrome/browser/ui/gtk/gtk_chrome_link_button.h"
|
| +#include "chrome/browser/ui/gtk/gtk_util.h"
|
| #include "chrome/browser/ui/gtk/theme_service_gtk.h"
|
| #include "chrome/common/autofill_messages.h"
|
| +#include "chrome/common/url_constants.h"
|
| #include "content/public/browser/render_view_host.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#include "grit/generated_resources.h"
|
| #include "ui/base/gtk/gtk_hig_constants.h"
|
| +#include "ui/base/l10n/l10n_util.h"
|
|
|
| const int kContentBorder = 4;
|
| const int kHorizontalSpacing = 4;
|
| @@ -19,15 +27,21 @@ PasswordGenerationBubbleGtk::PasswordGenerationBubbleGtk(
|
| GtkWidget* anchor_widget,
|
| Profile* profile,
|
| content::RenderViewHost* render_view_host)
|
| - : render_view_host_(render_view_host) {
|
| + : profile_(profile), render_view_host_(render_view_host) {
|
| // TODO(gcasto): Localize text after we have finalized the UI.
|
| // crbug.com/118062
|
| GtkWidget* content = gtk_vbox_new(FALSE, 5);
|
|
|
| - // We have two lines of content. The first is just the title,
|
| + // We have two lines of content. The first is the title and learn more link.
|
| GtkWidget* title_line = gtk_hbox_new(FALSE, 0);
|
| GtkWidget* title = gtk_label_new("Password Suggestion");
|
| gtk_box_pack_start(GTK_BOX(title_line), title, FALSE, FALSE, 0);
|
| + GtkWidget* learn_more_link = gtk_chrome_link_button_new(
|
| + l10n_util::GetStringUTF8(IDS_LEARN_MORE).c_str());
|
| + gtk_button_set_alignment(GTK_BUTTON(learn_more_link), 0.0, 0.5);
|
| + gtk_box_pack_start(GTK_BOX(title_line),
|
| + gtk_util::IndentWidget(learn_more_link),
|
| + FALSE, FALSE, 0);
|
|
|
| // The second contains the password in a text field and an accept button.
|
| GtkWidget* password_line = gtk_hbox_new(FALSE, kHorizontalSpacing);
|
| @@ -49,13 +63,15 @@ PasswordGenerationBubbleGtk::PasswordGenerationBubbleGtk(
|
| BubbleGtk::ARROW_LOCATION_TOP_LEFT,
|
| true, // match_system_theme
|
| true, // grab_input
|
| - ThemeServiceGtk::GetFrom(profile),
|
| + ThemeServiceGtk::GetFrom(profile_),
|
| NULL); // delegate
|
|
|
| g_signal_connect(content, "destroy",
|
| G_CALLBACK(&OnDestroyThunk), this);
|
| g_signal_connect(accept_button, "clicked",
|
| G_CALLBACK(&OnAcceptClickedThunk), this);
|
| + g_signal_connect(learn_more_link, "clicked",
|
| + G_CALLBACK(OnLearnMoreLinkClickedThunk), this);
|
| }
|
|
|
| PasswordGenerationBubbleGtk::~PasswordGenerationBubbleGtk() {}
|
| @@ -72,3 +88,12 @@ void PasswordGenerationBubbleGtk::OnAcceptClicked(GtkWidget* widget) {
|
| UTF8ToUTF16(gtk_entry_get_text(GTK_ENTRY(text_field_)))));
|
| bubble_->Close();
|
| }
|
| +
|
| +void PasswordGenerationBubbleGtk::OnLearnMoreLinkClicked(GtkButton* button) {
|
| + Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
|
| + content::OpenURLParams params(
|
| + GURL(chrome::kAutoPasswordGenerationLearnMoreURL), content::Referrer(),
|
| + NEW_FOREGROUND_TAB, content::PAGE_TRANSITION_LINK, false);
|
| + browser->OpenURL(params);
|
| + bubble_->Close();
|
| +}
|
|
|