| Index: chrome/browser/ui/gtk/website_settings_popup_gtk.cc
|
| diff --git a/chrome/browser/ui/gtk/website_settings_popup_gtk.cc b/chrome/browser/ui/gtk/website_settings_popup_gtk.cc
|
| index 561f2ae8d348e0b0358826bb1d1229ae3cfa555a..ec08565fb68285d51313e9b8fd56c7f10588f50d 100644
|
| --- a/chrome/browser/ui/gtk/website_settings_popup_gtk.cc
|
| +++ b/chrome/browser/ui/gtk/website_settings_popup_gtk.cc
|
| @@ -19,9 +19,11 @@
|
| #include "chrome/browser/ui/gtk/location_bar_view_gtk.h"
|
| #include "chrome/browser/ui/tab_contents/tab_contents.h"
|
| #include "chrome/browser/ui/website_settings/website_settings.h"
|
| +#include "chrome/browser/ui/website_settings/website_settings_utils.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "content/public/browser/cert_store.h"
|
| #include "googleurl/src/gurl.h"
|
| +#include "grit/chromium_strings.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/locale_settings.h"
|
| #include "grit/theme_resources.h"
|
| @@ -37,6 +39,74 @@ namespace {
|
| // is selected.
|
| const GdkColor kBackgroundColor = GDK_COLOR_RGB(0xff, 0xff, 0xff);
|
|
|
| +class InternalPageInfoPopupGtk : public BubbleDelegateGtk {
|
| + public:
|
| + explicit InternalPageInfoPopupGtk(gfx::NativeWindow parent,
|
| + Profile* profile);
|
| + virtual ~InternalPageInfoPopupGtk();
|
| +
|
| + private:
|
| + // BubbleDelegateGtk implementation.
|
| + virtual void BubbleClosing(BubbleGtk* bubble, bool closed_by_escape) OVERRIDE;
|
| +
|
| + // The popup bubble container.
|
| + BubbleGtk* bubble_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(InternalPageInfoPopupGtk);
|
| +};
|
| +
|
| +InternalPageInfoPopupGtk::InternalPageInfoPopupGtk(
|
| + gfx::NativeWindow parent, Profile* profile) {
|
| + GtkWidget* contents = gtk_hbox_new(FALSE, ui::kContentAreaSpacing);
|
| + gtk_container_set_border_width(GTK_CONTAINER(contents),
|
| + ui::kContentAreaBorder);
|
| + // Add the popup icon.
|
| + ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
| + GdkPixbuf* pixbuf = rb.GetNativeImageNamed(IDR_PRODUCT_LOGO_26).ToGdkPixbuf();
|
| + GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf);
|
| + gtk_box_pack_start(GTK_BOX(contents), image, FALSE, FALSE, 0);
|
| + gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
|
| +
|
| + // Add the popup text.
|
| + GtkThemeService* theme_service = GtkThemeService::GetFrom(profile);
|
| + GtkWidget* label = theme_service->BuildLabel(
|
| + l10n_util::GetStringUTF8(IDS_PAGE_INFO_INTERNAL_PAGE), ui::kGdkBlack);
|
| + gtk_label_set_selectable(GTK_LABEL(label), FALSE);
|
| + PangoAttrList* attributes = pango_attr_list_new();
|
| + pango_attr_list_insert(attributes,
|
| + pango_attr_weight_new(PANGO_WEIGHT_BOLD));
|
| + gtk_box_pack_start(GTK_BOX(contents), label, FALSE, FALSE, 0);
|
| +
|
| + gtk_widget_show_all(contents);
|
| +
|
| + // Create the bubble.
|
| + BubbleGtk::ArrowLocationGtk arrow_location = base::i18n::IsRTL() ?
|
| + BubbleGtk::ARROW_LOCATION_TOP_RIGHT :
|
| + BubbleGtk::ARROW_LOCATION_TOP_LEFT;
|
| + BrowserWindowGtk* browser_window =
|
| + BrowserWindowGtk::GetBrowserWindowForNativeWindow(parent);
|
| + GtkWidget* anchor = browser_window->
|
| + GetToolbar()->GetLocationBarView()->location_icon_widget();
|
| + bubble_ = BubbleGtk::Show(anchor,
|
| + NULL, // |rect|
|
| + contents,
|
| + arrow_location,
|
| + BubbleGtk::MATCH_SYSTEM_THEME |
|
| + BubbleGtk::POPUP_WINDOW |
|
| + BubbleGtk::GRAB_INPUT,
|
| + theme_service,
|
| + this); // |delegate|
|
| + DCHECK(bubble_);
|
| +}
|
| +
|
| +InternalPageInfoPopupGtk::~InternalPageInfoPopupGtk() {
|
| +}
|
| +
|
| +void InternalPageInfoPopupGtk::BubbleClosing(BubbleGtk* bubble,
|
| + bool closed_by_escape) {
|
| + delete this;
|
| +}
|
| +
|
| } // namespace
|
|
|
| // static
|
| @@ -45,7 +115,10 @@ void WebsiteSettingsPopupGtk::Show(gfx::NativeWindow parent,
|
| TabContents* tab_contents,
|
| const GURL& url,
|
| const content::SSLStatus& ssl) {
|
| - new WebsiteSettingsPopupGtk(parent, profile, tab_contents, url, ssl);
|
| + if (InternalChromePage(url))
|
| + new InternalPageInfoPopupGtk(parent, profile);
|
| + else
|
| + new WebsiteSettingsPopupGtk(parent, profile, tab_contents, url, ssl);
|
| }
|
|
|
| WebsiteSettingsPopupGtk::WebsiteSettingsPopupGtk(
|
|
|