Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dec64726 authored by Eric Erfanian's avatar Eric Erfanian Committed by android-build-merger
Browse files

Merge "Use ContactDisplayPreferencesStub when device is locked."

am: 4d6e1080

Change-Id: I1f0dc099c476ddb2e8baa412434aac4c9662d1be
parents 29a8ebdf 4d6e1080
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@
      android:entries="@array/contact_sort_order_entries"
      android:entryValues="@array/contact_sort_order_values"
      android:title="@string/display_options_sort_list_by"
      android:defaultValue="1"/>
      android:defaultValue="@string/display_options_sort_by_given_name_value"/>

  <ListPreference
      android:dialogTitle="@string/display_options_view_names_as"
@@ -34,6 +34,6 @@
      android:entries="@array/contact_display_order_entries"
      android:entryValues="@array/contact_display_order_values"
      android:title="@string/display_options_view_names_as"
      android:defaultValue="1"/>
      android:defaultValue="@string/display_options_view_given_name_first_value"/>

</PreferenceScreen>
+16 −3
Original line number Diff line number Diff line
@@ -16,22 +16,35 @@

package com.android.dialer.contacts;

import android.content.Context;
import android.os.UserManager;
import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
import com.android.dialer.contacts.displaypreference.ContactDisplayPreferencesImpl;
import com.android.dialer.contacts.displaypreference.ContactDisplayPreferencesStub;
import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequester;
import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequesterImpl;
import com.android.dialer.inject.ApplicationContext;
import com.android.dialer.inject.DialerVariant;
import com.android.dialer.inject.InstallIn;
import dagger.Binds;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;

/** Module for standard {@link ContactsComponent} */
@InstallIn(variants = {DialerVariant.DIALER_TEST})
@Module
public abstract class ContactsModule {
  @Binds
  public abstract ContactDisplayPreferences toContactDisplayPreferencesImpl(
      ContactDisplayPreferencesImpl impl);
  @Provides
  public static ContactDisplayPreferences provideContactDisplayPreferences(
      @ApplicationContext Context appContext,
      Lazy<ContactDisplayPreferencesImpl> impl,
      ContactDisplayPreferencesStub stub) {
    if (appContext.getSystemService(UserManager.class).isUserUnlocked()) {
      return impl.get();
    }
    return stub;
  }

  @Binds
  public abstract HighResolutionPhotoRequester toHighResolutionPhotoRequesterImpl(
+5 −2
Original line number Diff line number Diff line
@@ -23,7 +23,10 @@ import android.preference.PreferenceManager;
import com.android.dialer.inject.ApplicationContext;
import javax.inject.Inject;

/** Implementation of {@link ContactDisplayPreferences} backed by a {@link SharedPreferences} */
/**
 * Implementation of {@link ContactDisplayPreferences} backed by a {@link SharedPreferences}. Can
 * only be instantiated when the device is unlocked.
 */
public final class ContactDisplayPreferencesImpl implements ContactDisplayPreferences {

  private final Context appContext;
@@ -35,7 +38,7 @@ public final class ContactDisplayPreferencesImpl implements ContactDisplayPrefer
  ContactDisplayPreferencesImpl(@ApplicationContext Context appContext) {
    this.appContext = appContext;
    // @Unencrypted preference would be a better choice, but Android Preference only supports the
    // default file. Names cannot be shown on @Unencrypted anyway.
    // default file. Stub should be used instead when device is locked.
    this.sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext);
    displayOrderKey = appContext.getString(R.string.display_options_view_names_as_key);
    sortOrderKey = appContext.getString(R.string.display_options_sort_list_by_key);
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.dialer.contacts.displaypreference;

import javax.inject.Inject;

/**
 * Stub implementation of {@link ContactDisplayPreferences} that always returns primary. Used when
 * the device is locked and regular storage is not available.
 */
public final class ContactDisplayPreferencesStub implements ContactDisplayPreferences {

  @Inject
  ContactDisplayPreferencesStub() {}

  @Override
  public DisplayOrder getDisplayOrder() {
    return DisplayOrder.PRIMARY;
  }

  @Override
  public void setDisplayOrder(DisplayOrder displayOrder) {
    // Do nothing
  }

  @Override
  public SortOrder getSortOrder() {
    return SortOrder.BY_PRIMARY;
  }

  @Override
  public void setSortOrder(SortOrder sortOrder) {
    // Do nothing
  }
}