Home | History | Annotate | Download | only in geolocation
      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