// 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_infobar_delegate_android.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/android/google_location_settings_helper.h" #include "grit/generated_resources.h" #include "grit/locale_settings.h" #include "grit/theme_resources.h" #include "ui/base/l10n/l10n_util.h" GeolocationInfoBarDelegateAndroid::GeolocationInfoBarDelegateAndroid( InfoBarService* infobar_service, GeolocationInfoBarQueueController* controller, const GeolocationPermissionRequestID& id, const GURL& requesting_frame_url, int contents_unique_id, const std::string& display_languages) : GeolocationInfoBarDelegate(infobar_service, controller, id, requesting_frame_url, contents_unique_id, display_languages), google_location_settings_helper_( GoogleLocationSettingsHelper::Create()) { } GeolocationInfoBarDelegateAndroid::~GeolocationInfoBarDelegateAndroid() { } bool GeolocationInfoBarDelegateAndroid::Accept() { // Accept button text could be either 'Allow' or 'Google Location Settings'. // If 'Allow' we follow the regular flow. if (google_location_settings_helper_->IsGoogleAppsLocationSettingEnabled()) return GeolocationInfoBarDelegate::Accept(); // If 'Google Location Settings', we need to open the system Google Location // Settings activity. google_location_settings_helper_->ShowGoogleLocationSettings(); SetPermission(false, false); return true; } string16 GeolocationInfoBarDelegateAndroid::GetButtonLabel( InfoBarButton button) const { return (button == BUTTON_OK) ? UTF8ToUTF16(google_location_settings_helper_->GetAcceptButtonLabel()) : l10n_util::GetStringUTF16(IDS_GEOLOCATION_DENY_BUTTON); }