Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Unified Diff: chrome/browser/geolocation/geolocation_confirm_infobar_delegate.cc

Issue 11183018: Refactor ChromeGeolocationPermissionContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updates from comments Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/geolocation/geolocation_confirm_infobar_delegate.cc
diff --git a/chrome/browser/geolocation/geolocation_confirm_infobar_delegate.cc b/chrome/browser/geolocation/geolocation_confirm_infobar_delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f1fe5653a7a931607e76f56793140c7f33819974
--- /dev/null
+++ b/chrome/browser/geolocation/geolocation_confirm_infobar_delegate.cc
@@ -0,0 +1,102 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/geolocation/geolocation_confirm_infobar_delegate.h"
+
+#include "chrome/browser/geolocation/geolocation_infobar_queue_controller.h"
+#include "chrome/browser/google/google_util.h"
+#include "chrome/browser/infobars/infobar_tab_helper.h"
+#include "content/public/browser/navigation_details.h"
+#include "content/public/browser/navigation_entry.h"
+#include "grit/generated_resources.h"
+#include "grit/locale_settings.h"
+#include "grit/theme_resources.h"
+#include "net/base/net_util.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+
+// GeolocationConfirmInfoBarDelegate ------------------------------------------
+
+GeolocationConfirmInfoBarDelegate::GeolocationConfirmInfoBarDelegate(
+ InfoBarTabHelper* infobar_helper,
+ GeolocationInfoBarQueueController* controller,
+ int render_process_id,
+ int render_view_id,
+ int bridge_id,
+ const GURL& requesting_frame_url,
+ const std::string& display_languages)
+ : ConfirmInfoBarDelegate(infobar_helper),
+ controller_(controller),
+ render_process_id_(render_process_id),
+ render_view_id_(render_view_id),
+ bridge_id_(bridge_id),
+ requesting_frame_url_(requesting_frame_url),
+ display_languages_(display_languages) {
+ const content::NavigationEntry* committed_entry =
+ infobar_helper->GetWebContents()->GetController().GetLastCommittedEntry();
+ set_contents_unique_id(committed_entry ? committed_entry->GetUniqueID() : 0);
+}
+
+gfx::Image* GeolocationConfirmInfoBarDelegate::GetIcon() const {
+ return &ResourceBundle::GetSharedInstance().GetNativeImageNamed(
+ IDR_GEOLOCATION_INFOBAR_ICON);
+}
+
+InfoBarDelegate::Type
+ GeolocationConfirmInfoBarDelegate::GetInfoBarType() const {
+ return PAGE_ACTION_TYPE;
+}
+
+string16 GeolocationConfirmInfoBarDelegate::GetMessageText() const {
+ return l10n_util::GetStringFUTF16(IDS_GEOLOCATION_INFOBAR_QUESTION,
+ net::FormatUrl(requesting_frame_url_.GetOrigin(), display_languages_));
+}
+
+string16 GeolocationConfirmInfoBarDelegate::GetButtonLabel(
+ InfoBarButton button) const {
+ return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
+ IDS_GEOLOCATION_ALLOW_BUTTON : IDS_GEOLOCATION_DENY_BUTTON);
+}
+
+void GeolocationConfirmInfoBarDelegate::SetPermission(
+ bool update_content_setting, bool allowed) {
+ controller_->OnPermissionSet(
+ render_process_id_, render_view_id_, bridge_id_,
+ requesting_frame_url_,
+ owner()->GetWebContents()->GetURL(),
+ update_content_setting,
+ allowed);
+}
+
+bool GeolocationConfirmInfoBarDelegate::Accept() {
+ SetPermission(true, true);
+ return true;
+}
+
+bool GeolocationConfirmInfoBarDelegate::Cancel() {
+ SetPermission(true, false);
+ return true;
+}
+
+string16 GeolocationConfirmInfoBarDelegate::GetLinkText() const {
+ return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
+}
+
+bool GeolocationConfirmInfoBarDelegate::LinkClicked(
+ WindowOpenDisposition disposition) {
+ const char kGeolocationLearnMoreUrl[] =
+#if defined(OS_CHROMEOS)
+ "https://www.google.com/support/chromeos/bin/answer.py?answer=142065";
+#else
+ "https://www.google.com/support/chrome/bin/answer.py?answer=142065";
+#endif
+
+ content::OpenURLParams params(
+ google_util::AppendGoogleLocaleParam(GURL(kGeolocationLearnMoreUrl)),
+ content::Referrer(),
+ (disposition == CURRENT_TAB) ? NEW_FOREGROUND_TAB : disposition,
+ content::PAGE_TRANSITION_LINK, false);
+ owner()->GetWebContents()->OpenURL(params);
+ return false; // Do not dismiss the info bar.
+}

Powered by Google App Engine
This is Rietveld 408576698