1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/geolocation/geolocation_infobar_delegate_android.h" 6 7 #include "base/strings/utf_string_conversions.h" 8 #include "chrome/browser/android/google_location_settings_helper.h" 9 #include "grit/generated_resources.h" 10 #include "grit/locale_settings.h" 11 #include "grit/theme_resources.h" 12 #include "ui/base/l10n/l10n_util.h" 13 14 GeolocationInfoBarDelegateAndroid::GeolocationInfoBarDelegateAndroid( 15 InfoBarService* infobar_service, 16 PermissionQueueController* controller, 17 const PermissionRequestID& id, 18 const GURL& requesting_frame_url, 19 int contents_unique_id, 20 const std::string& display_languages) 21 : GeolocationInfoBarDelegate(infobar_service, controller, id, 22 requesting_frame_url, contents_unique_id, 23 display_languages), 24 google_location_settings_helper_( 25 GoogleLocationSettingsHelper::Create()) { 26 } 27 28 GeolocationInfoBarDelegateAndroid::~GeolocationInfoBarDelegateAndroid() { 29 } 30 31 bool GeolocationInfoBarDelegateAndroid::Accept() { 32 // Accept button text could be either 'Allow' or 'Google Location Settings'. 33 // If 'Allow' we follow the regular flow. 34 if (google_location_settings_helper_->IsGoogleAppsLocationSettingEnabled()) 35 return GeolocationInfoBarDelegate::Accept(); 36 37 // If 'Google Location Settings', we need to open the system Google Location 38 // Settings activity. 39 google_location_settings_helper_->ShowGoogleLocationSettings(); 40 SetPermission(false, false); 41 return true; 42 } 43 44 string16 GeolocationInfoBarDelegateAndroid::GetButtonLabel( 45 InfoBarButton button) const { 46 return (button == BUTTON_OK) ? 47 UTF8ToUTF16(google_location_settings_helper_->GetAcceptButtonLabel()) : 48 l10n_util::GetStringUTF16(IDS_GEOLOCATION_DENY_BUTTON); 49 } 50