Merge "Fix issue with overridden configuration in onConfigurationChanged" into nyc-dev

am: a149c42

* commit 'a149c42071197a7759a652accb399bc58ed62bcd':
  Fix issue with overridden configuration in onConfigurationChanged

Change-Id: I034e9ad42bf8e94ca97fd536ba1498fe19f01118
This commit is contained in:
Adam Lesinski
2016-04-05 02:28:26 +00:00
committed by android-build-merger
2 changed files with 25 additions and 1 deletions

View File

@@ -91,6 +91,7 @@ import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.util.SparseIntArray;
import android.util.SuperNotCalledException;
import android.view.ContextThemeWrapper;
import android.view.Display;
import android.view.ThreadedRenderer;
import android.view.View;
@@ -4632,7 +4633,21 @@ public final class ActivityThread {
}
if (reportToActivity) {
cb.onConfigurationChanged(newConfig);
Configuration configToReport = newConfig;
if (cb instanceof ContextThemeWrapper) {
// ContextThemeWrappers may override the configuration for that context.
// We must check and apply any overrides defined.
ContextThemeWrapper contextThemeWrapper = (ContextThemeWrapper) cb;
final Configuration localOverrideConfig =
contextThemeWrapper.getOverrideConfiguration();
if (localOverrideConfig != null) {
configToReport = new Configuration(newConfig);
configToReport.updateFrom(localOverrideConfig);
}
}
cb.onConfigurationChanged(configToReport);
}
if (activity != null) {

View File

@@ -101,6 +101,15 @@ public class ContextThemeWrapper extends ContextWrapper {
mOverrideConfiguration = new Configuration(overrideConfiguration);
}
/**
* Used by ActivityThread to apply the overridden configuration to onConfigurationChange
* callbacks.
* @hide
*/
public Configuration getOverrideConfiguration() {
return mOverrideConfiguration;
}
@Override
public AssetManager getAssets() {
// Ensure we're returning assets with the correct configuration.