diff options
362 files changed, 1625 insertions, 803 deletions
diff --git a/api/current.txt b/api/current.txt index 3bd607bff472..4f12ad4ed8c8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -40820,8 +40820,11 @@ package android.view { field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR; } - public final class DragAndDropPermissions { + public final class DragAndDropPermissions implements android.os.Parcelable { + method public int describeContents(); method public void release(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR; } public class DragEvent implements android.os.Parcelable { diff --git a/api/system-current.txt b/api/system-current.txt index 82404073d36e..ea2707e2bd6f 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -43819,8 +43819,11 @@ package android.view { field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR; } - public final class DragAndDropPermissions { + public final class DragAndDropPermissions implements android.os.Parcelable { + method public int describeContents(); method public void release(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR; } public class DragEvent implements android.os.Parcelable { diff --git a/api/test-current.txt b/api/test-current.txt index 8425e9007502..a70e9e3f7e19 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -40899,8 +40899,11 @@ package android.view { field public static final android.os.Parcelable.Creator<android.view.Display.Mode> CREATOR; } - public final class DragAndDropPermissions { + public final class DragAndDropPermissions implements android.os.Parcelable { + method public int describeContents(); method public void release(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator<android.view.DragAndDropPermissions> CREATOR; } public class DragEvent implements android.os.Parcelable { diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index cf663a32a072..e6ca52072079 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -16,6 +16,8 @@ package android.app; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentProvider; @@ -30,6 +32,7 @@ import android.content.IntentSender; import android.content.ReceiverCallNotAllowedException; import android.content.ServiceConnection; import android.content.SharedPreferences; +import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; @@ -155,10 +158,9 @@ class ContextImpl extends Context { private final String mBasePackageName; private final String mOpPackageName; - private final ResourcesManager mResourcesManager; - private final Resources mResources; - private final Display mDisplay; // may be null if default display - private final DisplayAdjustments mDisplayAdjustments = new DisplayAdjustments(); + private final @NonNull ResourcesManager mResourcesManager; + private final @NonNull Resources mResources; + private @Nullable Display mDisplay; // may be null if default display private final int mFlags; @@ -1897,18 +1899,6 @@ class ContextImpl extends Context { mUser, mFlags, display, null, Display.INVALID_DISPLAY); } - Display getDisplay() { - if (mDisplay != null) { - return mDisplay; - } - return ResourcesManager.getInstance().getAdjustedDisplay( - Display.DEFAULT_DISPLAY, mDisplayAdjustments); - } - - private int getDisplayId() { - return mDisplay != null ? mDisplay.getDisplayId() : Display.DEFAULT_DISPLAY; - } - @Override public Context createDeviceProtectedStorageContext() { final int flags = (mFlags & ~Context.CONTEXT_CREDENTIAL_PROTECTED_STORAGE) @@ -1941,8 +1931,23 @@ class ContextImpl extends Context { } @Override + public Display getDisplay() { + final DisplayAdjustments displayAdjustments = mResources.getDisplayAdjustments(); + if (mDisplay == null) { + return mResourcesManager.getAdjustedDisplay(Display.DEFAULT_DISPLAY, + displayAdjustments); + } + + if (!mDisplay.getDisplayAdjustments().equals(displayAdjustments)) { + mDisplay = mResourcesManager.getAdjustedDisplay(mDisplay.getDisplayId(), + displayAdjustments); + } + return mDisplay; + } + + @Override public DisplayAdjustments getDisplayAdjustments(int displayId) { - return mDisplayAdjustments; + return mResources.getDisplayAdjustments(); } @Override @@ -2057,11 +2062,6 @@ class ContextImpl extends Context { ? packageInfo.getCompatibilityInfo() : CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; } - mDisplayAdjustments.setCompatibilityInfo(compatInfo); - mDisplayAdjustments.setConfiguration(overrideConfiguration); - - mDisplay = (createDisplayWithId == Display.INVALID_DISPLAY) ? display - : ResourcesManager.getInstance().getAdjustedDisplay(displayId, mDisplayAdjustments); Resources resources = packageInfo.getResources(mainThread); if (resources != null) { @@ -2101,6 +2101,9 @@ class ContextImpl extends Context { } mResources = resources; + mDisplay = (createDisplayWithId == Display.INVALID_DISPLAY) ? display + : mResourcesManager.getAdjustedDisplay(displayId, mResources.getDisplayAdjustments()); + if (container != null) { mBasePackageName = container.mBasePackageName; mOpPackageName = container.mOpPackageName; diff --git a/core/java/android/app/Presentation.java b/core/java/android/app/Presentation.java index e110dcbf1d2a..70007f584645 100644 --- a/core/java/android/app/Presentation.java +++ b/core/java/android/app/Presentation.java @@ -310,7 +310,7 @@ public class Presentation extends Dialog { final WindowManagerImpl outerWindowManager = (WindowManagerImpl)outerContext.getSystemService(Context.WINDOW_SERVICE); final WindowManagerImpl displayWindowManager = - outerWindowManager.createPresentationWindowManager(display); + outerWindowManager.createPresentationWindowManager(displayContext); return new ContextThemeWrapper(displayContext, theme) { @Override public Object getSystemService(String name) { diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index f56a6ad855d4..cc2f62101e6d 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -304,10 +304,11 @@ public class ResourcesManager { } private @NonNull ResourcesImpl createResourcesImpl(@NonNull ResourcesKey key) { - AssetManager assets = createAssetManager(key); - DisplayMetrics dm = getDisplayMetrics(key.mDisplayId); - Configuration config = generateConfig(key, dm); - ResourcesImpl impl = new ResourcesImpl(assets, dm, config, key.mCompatInfo); + final AssetManager assets = createAssetManager(key); + final DisplayMetrics dm = getDisplayMetrics(key.mDisplayId); + final Configuration config = generateConfig(key, dm); + final ResourcesImpl impl = new ResourcesImpl(assets, dm, config, key.mCompatInfo, + key.mOverrideConfiguration); if (DEBUG) { Slog.d(TAG, "- creating impl=" + impl + " with key: " + key); } diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 7cd13ea4ff9d..55744b935f51 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -559,7 +559,7 @@ final class SystemServiceRegistry { new CachedServiceFetcher<WindowManager>() { @Override public WindowManager createService(ContextImpl ctx) { - return new WindowManagerImpl(ctx.getDisplay()); + return new WindowManagerImpl(ctx); }}); registerService(Context.USER_SERVICE, UserManager.class, diff --git a/core/java/android/app/job/JobInfo.java b/core/java/android/app/job/JobInfo.java index c4ca82e59b99..5823abf9d78f 100644 --- a/core/java/android/app/job/JobInfo.java +++ b/core/java/android/app/job/JobInfo.java @@ -28,6 +28,7 @@ import android.os.PersistableBundle; import android.util.Log; import java.util.ArrayList; +import java.util.Objects; /** * Container of data passed to the {@link android.app.job.JobScheduler} fully encapsulating the @@ -494,6 +495,20 @@ public class JobInfo implements Parcelable { return mFlags; } + @Override + public boolean equals(Object o) { + if (!(o instanceof TriggerContentUri)) { + return false; + } + TriggerContentUri t = (TriggerContentUri) o; + return Objects.equals(t.mUri, mUri) && t.mFlags == mFlags; + } + + @Override + public int hashCode() { + return (mUri == null ? 0 : mUri.hashCode()) ^ mFlags; + } + private TriggerContentUri(Parcel in) { mUri = Uri.CREATOR.createFromParcel(in); mFlags = in.readInt(); diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 0881c9cb2208..bdf888f59715 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -4279,6 +4279,11 @@ public abstract class Context { public abstract DisplayAdjustments getDisplayAdjustments(int displayId); /** + * @hide + */ + public abstract Display getDisplay(); + + /** * Indicates whether this Context is restricted. * * @return {@code true} if this Context is restricted, {@code false} otherwise. diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java index 087ac4781803..60da63e9bc09 100644 --- a/core/java/android/content/ContextWrapper.java +++ b/core/java/android/content/ContextWrapper.java @@ -819,6 +819,14 @@ public class ContextWrapper extends Context { return mBase.getDisplayAdjustments(displayId); } + /** + * @hide + */ + @Override + public Display getDisplay() { + return mBase.getDisplay(); + } + @Override public Context createDeviceProtectedStorageContext() { return mBase.createDeviceProtectedStorageContext(); diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 54a59680fe4d..7820cbedacc7 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -51,6 +51,7 @@ import android.util.Log; import android.util.LongSparseArray; import android.util.Pools.SynchronizedPool; import android.util.TypedValue; +import android.view.DisplayAdjustments; import android.view.ViewDebug; import android.view.ViewHierarchyEncoder; @@ -1800,6 +1801,11 @@ public class Resources { return mResourcesImpl.getDisplayMetrics(); } + /** @hide */ + public DisplayAdjustments getDisplayAdjustments() { + return mResourcesImpl.getDisplayAdjustments(); + } + /** * Return the current configuration that is in effect for this resource * object. The returned object should be treated as read-only. diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java index 000751e88639..0f140e945f7c 100644 --- a/core/java/android/content/res/ResourcesImpl.java +++ b/core/java/android/content/res/ResourcesImpl.java @@ -44,6 +44,8 @@ import android.util.LongSparseArray; import android.util.Slog; import android.util.TypedValue; import android.util.Xml; +import android.view.Display; +import android.view.DisplayAdjustments; import java.io.InputStream; import java.util.Arrays; @@ -111,7 +113,8 @@ public class ResourcesImpl { final AssetManager mAssets; - final DisplayMetrics mMetrics = new DisplayMetrics(); + private final DisplayMetrics mMetrics = new DisplayMetrics(); + private final DisplayAdjustments mDisplayAdjustments = new DisplayAdjustments(); private PluralRules mPluralRule; @@ -134,14 +137,42 @@ public class ResourcesImpl { * selecting/computing resource values (optional). * @param compatInfo this resource's compatibility info. Must not be null. */ - public ResourcesImpl(AssetManager assets, DisplayMetrics metrics, Configuration config, - CompatibilityInfo compatInfo) { + public ResourcesImpl(@NonNull AssetManager assets, @Nullable DisplayMetrics metrics, + @Nullable Configuration config, @NonNull CompatibilityInfo compatInfo) { + this(assets, metrics, config, compatInfo, null); + } + + /** + * Creates a new ResourcesImpl object with CompatibilityInfo and assigns a static overrideConfig + * that is reported with getDisplayAdjustments(). This is used for updating the Display + * when a new ResourcesImpl is created due to multi-window configuration changes. + * + * @param assets Previously created AssetManager. + * @param metrics Current display metrics to consider when selecting/computing resource values. + * @param fullConfig Desired device configuration to consider when selecting/computing + * resource values. + * @param compatInfo this resource's compatibility info. Must not be null. + * @param overrideConfig the overrides specific to this ResourcesImpl object. They must already + * be applied to the fullConfig and are mainly maintained in order to return a valid + * DisplayAdjustments object during configuration changes. + */ + public ResourcesImpl(@NonNull AssetManager assets, @Nullable DisplayMetrics metrics, + @Nullable Configuration fullConfig, @NonNull CompatibilityInfo compatInfo, + @Nullable Configuration overrideConfig) { mAssets = assets; mMetrics.setToDefaults(); - updateConfiguration(config, metrics, compatInfo); + mDisplayAdjustments.setCompatibilityInfo(compatInfo); + if (overrideConfig != null) { + mDisplayAdjustments.setConfiguration(overrideConfig); + } + updateConfiguration(fullConfig, metrics, compatInfo); mAssets.ensureStringBlocks(); } + public DisplayAdjustments getDisplayAdjustments() { + return mDisplayAdjustments; + } + public AssetManager getAssets() { return mAssets; } diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 4506f51fe38a..f664e70cf7be 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -1184,6 +1184,8 @@ public class Process { /** @hide */ public static final int PROC_QUOTES = 0x400; /** @hide */ + public static final int PROC_CHAR = 0x800; + /** @hide */ public static final int PROC_OUT_STRING = 0x1000; /** @hide */ public static final int PROC_OUT_LONG = 0x2000; diff --git a/core/java/android/security/NetworkSecurityPolicy.java b/core/java/android/security/NetworkSecurityPolicy.java index 331063e2bfac..1b1c30048ee7 100644 --- a/core/java/android/security/NetworkSecurityPolicy.java +++ b/core/java/android/security/NetworkSecurityPolicy.java @@ -17,7 +17,10 @@ package android.security; import android.annotation.TestApi; +import android.content.Context; +import android.content.pm.PackageManager; import android.security.net.config.ApplicationConfig; +import android.security.net.config.ManifestConfigSource; /** * Network security policy. @@ -98,4 +101,16 @@ public class NetworkSecurityPolicy { public void handleTrustStorageUpdate() { ApplicationConfig.getDefaultInstance().handleTrustStorageUpdate(); } + + /** + * Returns an {@link ApplicationConfig} based on the configuration for {@code packageName}. + * + * @hide + */ + public static ApplicationConfig getApplicationConfigForPackage(Context context, + String packageName) throws PackageManager.NameNotFoundException { + Context appContext = context.createPackageContext(packageName, 0); + ManifestConfigSource source = new ManifestConfigSource(appContext); + return new ApplicationConfig(source); + } } diff --git a/core/java/android/service/quicksettings/IQSService.aidl b/core/java/android/service/quicksettings/IQSService.aidl index 747f18531d3b..bf963570b040 100644 --- a/core/java/android/service/quicksettings/IQSService.aidl +++ b/core/java/android/service/quicksettings/IQSService.aidl @@ -23,6 +23,7 @@ import android.service.quicksettings.Tile; * @hide */ interface IQSService { + Tile getTile(in ComponentName component); void updateQsTile(in Tile tile); void updateStatusIcon(in Tile tile, in Icon icon, String contentDescription); diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java index 67793fd041c6..55cfb49fe14e 100644 --- a/core/java/android/service/quicksettings/TileService.java +++ b/core/java/android/service/quicksettings/TileService.java @@ -123,11 +123,6 @@ public class TileService extends Service { /** * @hide */ - public static final String EXTRA_TILE = "tile"; - - /** - * @hide - */ public static final String EXTRA_COMPONENT = "android.service.quicksettings.extra.COMPONENT"; private final H mHandler = new H(Looper.getMainLooper()); @@ -315,9 +310,16 @@ public class TileService extends Service { @Override public IBinder onBind(Intent intent) { - mTile = intent.getParcelableExtra(EXTRA_TILE); mService = IQSService.Stub.asInterface(intent.getIBinderExtra(EXTRA_SERVICE)); - mTile.setService(mService); + try { + mTile = mService.getTile(new ComponentName(getPackageName(), getClass().getName())); + } catch (RemoteException e) { + throw new RuntimeException("Unable to reach IQSService", e); + } + if (mTile != null) { + mTile.setService(mService); + mHandler.sendEmptyMessage(H.MSG_START_SUCCESS); + } return new IQSTileService.Stub() { @Override public void onTileRemoved() throws RemoteException { @@ -358,6 +360,7 @@ public class TileService extends Service { private static final int MSG_TILE_REMOVED = 4; private static final int MSG_TILE_CLICKED = 5; private static final int MSG_UNLOCK_COMPLETE = 6; + private static final int MSG_START_SUCCESS = 7; public H(Looper looper) { super(looper); @@ -397,6 +400,12 @@ public class TileService extends Service { mUnlockRunnable.run(); } break; + case MSG_START_SUCCESS: + try { + mService.onStartSuccessful(mTile); + } catch (RemoteException e) { + } + break; } } } diff --git a/core/java/android/view/DisplayAdjustments.java b/core/java/android/view/DisplayAdjustments.java index 272740fb6c01..6cc0508b5832 100644 --- a/core/java/android/view/DisplayAdjustments.java +++ b/core/java/android/view/DisplayAdjustments.java @@ -23,8 +23,6 @@ import java.util.Objects; /** @hide */ public class DisplayAdjustments { - public static final boolean DEVELOPMENT_RESOURCES_DEPEND_ON_ACTIVITY_TOKEN = false; - public static final DisplayAdjustments DEFAULT_DISPLAY_ADJUSTMENTS = new DisplayAdjustments(); private volatile CompatibilityInfo mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; @@ -74,10 +72,8 @@ public class DisplayAdjustments { @Override public int hashCode() { int hash = 17; - hash = hash * 31 + mCompatInfo.hashCode(); - if (DEVELOPMENT_RESOURCES_DEPEND_ON_ACTIVITY_TOKEN) { - hash = hash * 31 + (mConfiguration == null ? 0 : mConfiguration.hashCode()); - } + hash = hash * 31 + Objects.hashCode(mCompatInfo); + hash = hash * 31 + Objects.hashCode(mConfiguration); return hash; } diff --git a/core/java/android/view/DragAndDropPermissions.java b/core/java/android/view/DragAndDropPermissions.java index a3dbdb16197d..71afaaa5b458 100644 --- a/core/java/android/view/DragAndDropPermissions.java +++ b/core/java/android/view/DragAndDropPermissions.java @@ -16,12 +16,14 @@ package android.view; +import android.app.Activity; import android.app.ActivityManagerNative; import android.os.IBinder; +import android.os.Parcel; +import android.os.Parcelable; import android.os.RemoteException; -import com.android.internal.view.IDragAndDropPermissions; -import dalvik.system.CloseGuard; +import com.android.internal.view.IDragAndDropPermissions; /** * {@link DragAndDropPermissions} controls the access permissions for the content URIs associated @@ -33,20 +35,27 @@ import dalvik.system.CloseGuard; * Which permissions are granted is defined by the set of flags passed to {@link * View#startDragAndDrop(android.content.ClipData, View.DragShadowBuilder, Object, int) * View.startDragAndDrop} by the app that started the drag operation. + * </p> * <p> * The life cycle of the permissions is bound to the activity used to call {@link * android.app.Activity#requestDragAndDropPermissions(DragEvent) requestDragAndDropPermissions}. The * permissions are revoked when this activity is destroyed, or when {@link #release()} is called, * whichever occurs first. + * </p> + * <p> + * If you anticipate that your application will receive a large number of drops (e.g. document + * editor), you should try to call {@link #release()} on the obtained permissions as soon as they + * are no longer required. Permissions can be added to your activity's + * {@link Activity#onSaveInstanceState} bundle and later retrieved in order to manually release + * the permissions once they are no longer needed. + * </p> */ -public final class DragAndDropPermissions { +public final class DragAndDropPermissions implements Parcelable { private final IDragAndDropPermissions mDragAndDropPermissions; private IBinder mPermissionOwnerToken; - private final CloseGuard mCloseGuard = CloseGuard.get(); - /** * Create a new {@link DragAndDropPermissions} object to control the access permissions for * content URIs associated with {@link DragEvent}. @@ -79,7 +88,6 @@ public final class DragAndDropPermissions { } catch (RemoteException e) { return false; } - mCloseGuard.open("release"); return true; } @@ -96,7 +104,6 @@ public final class DragAndDropPermissions { } catch (RemoteException e) { return false; } - mCloseGuard.open("release"); return true; } @@ -109,18 +116,34 @@ public final class DragAndDropPermissions { mPermissionOwnerToken = null; } catch (RemoteException e) { } - mCloseGuard.close(); } - @Override - protected void finalize() throws Throwable { - try { - if (mCloseGuard != null) { - mCloseGuard.warnIfOpen(); - } - release(); - } finally { - super.finalize(); + public static final Parcelable.Creator<DragAndDropPermissions> CREATOR = + new Parcelable.Creator<DragAndDropPermissions> () { + @Override + public DragAndDropPermissions createFromParcel(Parcel source) { + return new DragAndDropPermissions(source); + } + + @Override + public DragAndDropPermissions[] newArray(int size) { + return new DragAndDropPermissions[size]; } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel destination, int flags) { + destination.writeStrongInterface(mDragAndDropPermissions); + destination.writeStrongBinder(mPermissionOwnerToken); + } + + private DragAndDropPermissions(Parcel in) { + mDragAndDropPermissions = IDragAndDropPermissions.Stub.asInterface(in.readStrongBinder()); + mPermissionOwnerToken = in.readStrongBinder(); } } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 48bdcb2e6720..b3daa16dd86f 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -26,7 +26,9 @@ import static android.view.WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY; import android.Manifest; import android.animation.LayoutTransition; +import android.annotation.NonNull; import android.app.ActivityManagerNative; +import android.app.ResourcesManager; import android.content.ClipDescription; import android.content.ComponentCallbacks; import android.content.Context; @@ -163,7 +165,7 @@ public final class ViewRootImpl implements ViewParent, final ArrayList<WindowCallbacks> mWindowCallbacks = new ArrayList<>(); final Context mContext; final IWindowSession mWindowSession; - final Display mDisplay; + @NonNull Display mDisplay; final DisplayManager mDisplayManager; final String mBasePackageName; @@ -307,8 +309,6 @@ public final class ViewRootImpl implements ViewParent, boolean mAdded; boolean mAddedTouchMode; - final DisplayAdjustments mDisplayAdjustments; - // These are accessed by multiple threads. final Rect mWinFrame; // frame given by window manager. @@ -412,9 +412,6 @@ public final class ViewRootImpl implements ViewParent, mWindowSession = WindowManagerGlobal.getWindowSession(); mDisplay = display; mBasePackageName = context.getBasePackageName(); - - mDisplayAdjustments = display.getDisplayAdjustments(); - mThread = Thread.currentThread(); mLocation = new WindowLeaked(null); mLocation.fillInStackTrace(); @@ -588,7 +585,8 @@ public final class ViewRootImpl implements ViewParent, attrs.setSurfaceInsets(view, false /*manual*/, true /*preservePrevious*/); } - CompatibilityInfo compatibilityInfo = mDisplayAdjustments.getCompatibilityInfo(); + CompatibilityInfo compatibilityInfo = + mDisplay.getDisplayAdjustments().getCompatibilityInfo(); mTranslator = compatibilityInfo.getTranslator(); // If the application owns the surface, don't enable hardware acceleration @@ -1468,7 +1466,8 @@ public final class ViewRootImpl implements ViewParent, surfaceChanged = true; params = lp; } - CompatibilityInfo compatibilityInfo = mDisplayAdjustments.getCompatibilityInfo(); + CompatibilityInfo compatibilityInfo = + mDisplay.getDisplayAdjustments().getCompatibilityInfo(); if (compatibilityInfo.supportsScreen() == mLastInCompatMode) { params = lp; mFullRedrawNeeded = true; @@ -3306,7 +3305,7 @@ public final class ViewRootImpl implements ViewParent, + mWindowAttributes.getTitle() + ": " + config); - CompatibilityInfo ci = mDisplayAdjustments.getCompatibilityInfo(); + CompatibilityInfo ci = mDisplay.getDisplayAdjustments().getCompatibilityInfo(); if (!ci.equals(CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO)) { config = new Configuration(config); ci.applyToConfiguration(mNoncompatDensity, config); @@ -3321,8 +3320,13 @@ public final class ViewRootImpl implements ViewParent, // At this point the resources have been updated to // have the most recent config, whatever that is. Use // the one in them which may be newer. - config = mView.getResources().getConfiguration(); + final Resources localResources = mView.getResources(); + config = localResources.getConfiguration(); if (force || mLastConfiguration.diff(config) != 0) { + // Update the display with new DisplayAdjustments. + mDisplay = ResourcesManager.getInstance().getAdjustedDisplay( + mDisplay.getDisplayId(), localResources.getDisplayAdjustments()); + final int lastLayoutDirection = mLastConfiguration.getLayoutDirection(); final int currentLayoutDirection = config.getLayoutDirection(); mLastConfiguration.setTo(config); diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index f8c7d68bd394..dd4e09685362 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -55,26 +55,26 @@ import java.util.List; */ public final class WindowManagerImpl implements WindowManager { private final WindowManagerGlobal mGlobal = WindowManagerGlobal.getInstance(); - private final Display mDisplay; + private final Context mContext; private final Window mParentWindow; private IBinder mDefaultToken; - public WindowManagerImpl(Display display) { - this(display, null); + public WindowManagerImpl(Context context) { + this(context, null); } - private WindowManagerImpl(Display display, Window parentWindow) { - mDisplay = display; + private WindowManagerImpl(Context context, Window parentWindow) { + mContext = context; mParentWindow = parentWindow; } public WindowManagerImpl createLocalWindowManager(Window parentWindow) { - return new WindowManagerImpl(mDisplay, parentWindow); + return new WindowManagerImpl(mContext, parentWindow); } - public WindowManagerImpl createPresentationWindowManager(Display display) { - return new WindowManagerImpl(display, mParentWindow); + public WindowManagerImpl createPresentationWindowManager(Context displayContext) { + return new WindowManagerImpl(displayContext, mParentWindow); } /** @@ -90,7 +90,7 @@ public final class WindowManagerImpl implements WindowManager { @Override public void addView(@NonNull View view, @NonNull ViewGroup.LayoutParams params) { applyDefaultToken(params); - mGlobal.addView(view, params, mDisplay, mParentWindow); + mGlobal.addView(view, params, mContext.getDisplay(), mParentWindow); } @Override @@ -144,6 +144,6 @@ public final class WindowManagerImpl implements WindowManager { @Override public Display getDefaultDisplay() { - return mDisplay; + return mContext.getDisplay(); } } diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index 3f6e625245f3..19aa1a869a5e 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -1517,13 +1517,9 @@ public class PopupWindow { anchor.getWindowVisibleDisplayFrame(displayFrame); if (width == MATCH_PARENT) { width = displayFrame.right - displayFrame.left; - } else if (width == WRAP_CONTENT) { - width = mContentView.getMeasuredWidth(); } if (height == MATCH_PARENT) { height = displayFrame.bottom - displayFrame.top; - } else if (height == WRAP_CONTENT) { - height = mContentView.getMeasuredHeight(); } // Let the window manager know to align the top to y. diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index f853e04099b4..a1df8c186982 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -8186,7 +8186,12 @@ public class BatteryStatsImpl extends BatteryStats { for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) { mScreenBrightnessTimer[i].reset(false); } - mEstimatedBatteryCapacity = (int) mPowerProfile.getBatteryCapacity(); + + if (mPowerProfile != null) { + mEstimatedBatteryCapacity = (int) mPowerProfile.getBatteryCapacity(); + } else { + mEstimatedBatteryCapacity = -1; + } mInteractiveTimer.reset(false); mPowerSaveModeEnabledTimer.reset(false); mLastIdleTimeStart = elapsedRealtimeMillis; diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index f7a5e8a07fc0..3d952b0f713f 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -832,6 +832,7 @@ enum { PROC_COMBINE = 0x100, PROC_PARENS = 0x200, PROC_QUOTES = 0x400, + PROC_CHAR = 0x800, PROC_OUT_STRING = 0x1000, PROC_OUT_LONG = 0x2000, PROC_OUT_FLOAT = 0x4000, @@ -933,8 +934,13 @@ jboolean android_os_Process_parseProcLineArray(JNIEnv* env, jobject clazz, floatsData[di] = strtof(buffer+start, &end); } if ((mode&PROC_OUT_LONG) != 0 && di < NL) { - char* end; - longsData[di] = strtoll(buffer+start, &end, 10); + if ((mode&PROC_CHAR) != 0) { + // Caller wants single first character returned as one long. + longsData[di] = buffer[start]; + } else { + char* end; + longsData[di] = strtoll(buffer+start, &end, 10); + } } if ((mode&PROC_OUT_STRING) != 0 && di < NS) { jstring str = env->NewStringUTF(buffer+start); diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index c03fb5bff581..b1c5b04c0e68 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skaal"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Wys altyd"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Heraktiveer hierdie in Stelselinstellings > Programme > Afgelaai."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Die program <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) het sy selfopgelegde StrictMode-beleid oortree."</string> <string name="smv_process" msgid="5120397012047462446">"Die proses <xliff:g id="PROCESS">%1$s</xliff:g> het die selfopgelegde StrictMode-beleid geskend."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android gradeer tans op..."</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 55f0f2a9d6fa..a8a798195650 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"የልኬት ለውጥ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ሁልጊዜ አሳይ"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"በስርዓት ቅንብሮች ውስጥ ይሄንን ዳግም አንቃ> Apps &gt፤ወርዷል፡፡"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"መተግበሪያው <xliff:g id="APPLICATION">%1$s</xliff:g>( ሂደት<xliff:g id="PROCESS">%2$s</xliff:g>) በራስ ተነሳሺ StrictMode ደንብን ይተላለፋል።"</string> <string name="smv_process" msgid="5120397012047462446">"ሂደቱ <xliff:g id="PROCESS">%1$s</xliff:g> በራስ ተነሳሺ StrictMode ፖሊሲን ይተላለፋል።"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android እያሻሻለ ነው..."</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index bd6de2e3ca69..449f8985724f 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1107,6 +1107,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"تدرج"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"الإظهار دائمًا"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"يمكنك إعادة تمكين هذا في إعدادات النظام > التطبيقات > ما تم تنزيله."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"انتهك التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> (العملية <xliff:g id="PROCESS">%2$s</xliff:g>) سياسة StrictMode المفروضة ذاتيًا."</string> <string name="smv_process" msgid="5120397012047462446">"انتهكت العملية <xliff:g id="PROCESS">%1$s</xliff:g> سياسة StrictMode المفروضة ذاتيًا."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"جارٍ ترقية Android..."</string> diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml index 17712b0fc41e..7f55ba12ad1a 100644 --- a/core/res/res/values-az-rAZ/strings.xml +++ b/core/res/res/values-az-rAZ/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Miqyas"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Həmişə göstər"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Bunları Sistem ayarlarında yenidən aktivləşdir Yüklənmiş > Tətbiqlər >."</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"<xliff:g id="APP_NAME">%1$s</xliff:g> cari Ekran ölçüsü ayarını dəstəkləmir və gözlənilməz şəkildə davrana bilər."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"Həmişə göstərin"</string> <string name="smv_application" msgid="3307209192155442829">"Tətbiq <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) StrictMode siyasətini pozdu."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> prosesi StrictMode siyasətini pozdu."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android təkmilləşdirilir..."</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 1620f6385c56..b3f6a3e5f3ed 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1038,6 +1038,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Razmera"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Uvek prikazuj"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Ponovo omogućite u meniju Sistemska podešavanja > Aplikacije > Preuzeto."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) je prekršila samonametnute StrictMode smernice."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> je prekršio samonametnute StrictMode smernice."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android se nadograđuje…"</string> diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml index 6cdef815b8c3..a39bed1f289a 100644 --- a/core/res/res/values-be-rBY/strings.xml +++ b/core/res/res/values-be-rBY/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Шкала"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Заўсёды паказваць"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Зноў уключыце гэта ў раздзеле \"Сістэмныя налады > Прыкладанні > Спампаваныя\"."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Прыкладанне <xliff:g id="APPLICATION">%1$s</xliff:g> (працэс <xliff:g id="PROCESS">%2$s</xliff:g>) парушыла ўласную палітыку StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Працэс <xliff:g id="PROCESS">%1$s</xliff:g> парушыў уласную палітыку StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Абнаўленне Android..."</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index ef9d5240aebb..f38c7ddde4f8 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Мащаб"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Винаги да се показва"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Активирайте отново това в „Системни настройки“ > „Приложения“ > „Изтеглени“."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Приложението „<xliff:g id="APPLICATION">%1$s</xliff:g>“ (процес „<xliff:g id="PROCESS">%2$s</xliff:g>“) наруши правилото за стриктен режим, наложено от самото него."</string> <string name="smv_process" msgid="5120397012047462446">"Процесът <xliff:g id="PROCESS">%1$s</xliff:g> наруши правилото за стриктен режим, наложено от самия него."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android се надстройва..."</string> diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml index 97e61c95eb83..8ffee4f1aca6 100644 --- a/core/res/res/values-bn-rBD/strings.xml +++ b/core/res/res/values-bn-rBD/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"স্কেল"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"সবসময় দেখান"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"সিস্টেম সেটিংস> অ্যাপ্স> ডাউনলোড করাগুলি এ এটি পুনঃসক্ষম করুন৷"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"অ্যাপ্লিকেশানটি <xliff:g id="APPLICATION">%1$s</xliff:g> (প্রক্রিয়া <xliff:g id="PROCESS">%2$s</xliff:g>) তার স্ব-প্রয়োগ করা কঠোর মোড নীতি লঙ্ঘন করেছে৷"</string> <string name="smv_process" msgid="5120397012047462446">"প্রক্রিয়াটি <xliff:g id="PROCESS">%1$s</xliff:g> তার স্ব-প্রয়োগ করা কঠোর মোড নীতি লঙ্ঘন করেছে৷"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android আপগ্রেড করা হচ্ছে..."</string> diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml index bd14448e8fd2..31f634bdc152 100644 --- a/core/res/res/values-bs-rBA/strings.xml +++ b/core/res/res/values-bs-rBA/strings.xml @@ -1040,6 +1040,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Razmjer"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Uvijek prikaži"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Ponovo omogućite ovu opciju u meniju Postavke sistema > Aplikacije > Preuzete aplikacije."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) prekršila je vlastita StrictMode pravila."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> prekršio je vlastita StrictMode pravila."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Nadogradnja sistema Android u toku..."</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 44a8f3b2795a..a18639c41863 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostra sempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Torna a activar-ho a Configuració del sistema > Aplicacions > Baixades."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"L\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g>(procés <xliff:g id="PROCESS">%2$s</xliff:g>) ha incomplert la seva política autoimposada de mode estricte."</string> <string name="smv_process" msgid="5120397012047462446">"El procés <xliff:g id="PROCESS">%1$s</xliff:g> ha incomplert la seva política de mode estricte."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android s\'està actualitzant..."</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index ba33ccd6b2ef..985e15cd4ff8 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Měřítko"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Vždy zobrazovat"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Tento režim znovu povolíte v sekci Nastavení systému > Aplikace > Stažené."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikace <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) porušila své vlastní vynucené zásady StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> porušil své vlastní vynucené zásady StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android se upgraduje..."</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index e737f557ffb5..00156547d414 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skaler"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Vis altid"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Aktivér dette igen i Systemindstillinger > Apps > Downloadet."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Appen <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) har overtrådt sin egen StrictMode-politik."</string> <string name="smv_process" msgid="5120397012047462446">"Processen <xliff:g id="PROCESS">%1$s</xliff:g> har overtrådt sin egen StrictMode-politik."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android opgraderes..."</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 6bc3e4c29c7b..830c1f884c33 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skalieren"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Immer anzeigen"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Eine erneute Aktivierung ist in den Systemeinstellungen unter \"Apps > Heruntergeladen\" möglich."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Die App <xliff:g id="APPLICATION">%1$s</xliff:g> (Prozess <xliff:g id="PROCESS">%2$s</xliff:g>) hat gegen deine selbsterzwungene StrictMode-Richtlinie verstoßen."</string> <string name="smv_process" msgid="5120397012047462446">"Der Prozess <xliff:g id="PROCESS">%1$s</xliff:g> hat gegen seine selbsterzwungene StrictMode-Richtlinie verstoßen."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android wird aktualisiert..."</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 49ba0cf82d32..100ee8162e76 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Κλίμακα"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Να εμφανίζονται πάντα"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Ενεργοποιήστε το ξανά στις Ρυθμίσεις συστημάτων > Εφαρμογές > Ληφθείσες."</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει την τρέχουσα ρύθμιση Μεγέθους οθόνης και ενδέχεται να παρουσιάζει μη αναμενόμενη συμπεριφορά."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"Να εμφανίζεται πάντα"</string> <string name="smv_application" msgid="3307209192155442829">"Η εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> (διεργασία <xliff:g id="PROCESS">%2$s</xliff:g>) παραβίασε την αυτοεπιβαλλόμενη πολιτική StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Η διεργασία <xliff:g id="PROCESS">%1$s</xliff:g> παραβίασε την αυτοεπιβαλόμενη πολιτική StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Το Android αναβαθμίζεται..."</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 2f9fb4bb656a..e45d625c3c29 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Scale"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Always show"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Re-enable this in System settings > Apps > Downloaded."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"The app <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has violated its self-enforced Strict Mode policy."</string> <string name="smv_process" msgid="5120397012047462446">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has violated its self-enforced StrictMode policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 2f9fb4bb656a..e45d625c3c29 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Scale"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Always show"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Re-enable this in System settings > Apps > Downloaded."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"The app <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has violated its self-enforced Strict Mode policy."</string> <string name="smv_process" msgid="5120397012047462446">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has violated its self-enforced StrictMode policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 2f9fb4bb656a..e45d625c3c29 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Scale"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Always show"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Re-enable this in System settings > Apps > Downloaded."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"The app <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) has violated its self-enforced Strict Mode policy."</string> <string name="smv_process" msgid="5120397012047462446">"The process <xliff:g id="PROCESS">%1$s</xliff:g> has violated its self-enforced StrictMode policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android is upgrading…"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 2f76a33fdc15..e2bd326f228f 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostrar siempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Volver a activar Configuración del sistema > Aplicaciones > Descargas"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"La aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) ha infringido su política StrictMode de aplicación automática."</string> <string name="smv_process" msgid="5120397012047462446">"El proceso <xliff:g id="PROCESS">%1$s</xliff:g> ha violado su política StrictMode autoimpuesta."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android se está actualizando..."</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 89efca161eb1..9fff56fe0419 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostrar siempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Para volver a habilitar esta opción, accede a Ajustes > Aplicaciones > Descargadas."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"La aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) ha infringido su política StrictMode autoaplicable."</string> <string name="smv_process" msgid="5120397012047462446">"El proceso <xliff:g id="PROCESS">%1$s</xliff:g> ha infringido su política StrictMode autoaplicable."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Actualizando Android"</string> diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml index d8f67733bac5..67b58d59682d 100644 --- a/core/res/res/values-et-rEE/strings.xml +++ b/core/res/res/values-et-rEE/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Mõõtkava"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Kuva alati"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Lubage see uuesti valikutes Süsteemiseaded > Rakendused > Allalaaditud."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Rakendus <xliff:g id="APPLICATION">%1$s</xliff:g> (protsess <xliff:g id="PROCESS">%2$s</xliff:g>) on rikkunud isekehtestatud StrictMode\'i eeskirju."</string> <string name="smv_process" msgid="5120397012047462446">"Protsess <xliff:g id="PROCESS">%1$s</xliff:g> on rikkunud isejõustatud StrictMode\'i eeskirju."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android viiakse üle uuemale versioonile ..."</string> diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml index 6e5b178801d3..0f6702beea06 100644 --- a/core/res/res/values-eu-rES/strings.xml +++ b/core/res/res/values-eu-rES/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Eskala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Erakutsi beti"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Gaitu hori berriro Sistemaren ezarpenak > Aplikazioak > Deskargatutakoak."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> aplikazioak (<xliff:g id="PROCESS">%2$s</xliff:g> prozesua) berak aplikatutako StrictMode gidalerroa urratu du."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> prozesuak bere kabuz ezarritako StrictMode gidalerroak urratu ditu."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android bertsio-berritzen ari da…"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 01b636da1934..627f1e230b56 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"مقیاس"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"همیشه نشان داده شود"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"در تنظیمات سیستم >برنامهها > مورد بارگیری شده آن را دوباره فعال کنید."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"برنامه <xliff:g id="APPLICATION">%1$s</xliff:g> (پردازش <xliff:g id="PROCESS">%2$s</xliff:g>) خطمشی StrictMode اجرایی خود را نقض کرده است."</string> <string name="smv_process" msgid="5120397012047462446">"فرآیند <xliff:g id="PROCESS">%1$s</xliff:g> خطمشی StrictMode اجرای خودکار خود را نقض کرده است."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android در حال ارتقا است..."</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index e59165efbd54..ae0e0cc5ae29 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Asteikko"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Näytä aina"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Ota tämä uudelleen käyttöön kohdassa Järjestelmäasetukset > Sovellukset > Ladattu."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Sovellus <xliff:g id="APPLICATION">%1$s</xliff:g> (prosessi <xliff:g id="PROCESS">%2$s</xliff:g>) on rikkonut itse käyttöön ottamaansa StrictMode-käytäntöä."</string> <string name="smv_process" msgid="5120397012047462446">"Prosessi <xliff:g id="PROCESS">%1$s</xliff:g> on rikkonut itse käyttöön ottamaansa StrictMode-käytäntöä."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Androidia päivitetään…"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 20d4e8a68604..fe346faee31d 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Redimensionner"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Toujours afficher"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Réactivez ce mode en accédant à Paramètres système > Applications > Téléchargements"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"L\'application <xliff:g id="APPLICATION">%1$s</xliff:g> (du processus <xliff:g id="PROCESS">%2$s</xliff:g>) a enfreint ses propres règles du mode strict."</string> <string name="smv_process" msgid="5120397012047462446">"Le processus <xliff:g id="PROCESS">%1$s</xliff:g> a enfreint ses propres règles du mode strict."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Mise à jour d\'Android…"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index b7daaf46a9a2..01e7c45c4c5f 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Mise à l\'échelle"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Toujours afficher"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Réactivez ce mode en accédant à Paramètres système > Applications > Téléchargements"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"L\'application <xliff:g id="APPLICATION">%1$s</xliff:g> (du processus <xliff:g id="PROCESS">%2$s</xliff:g>) a enfreint ses propres règles du mode strict."</string> <string name="smv_process" msgid="5120397012047462446">"Le processus <xliff:g id="PROCESS">%1$s</xliff:g> a enfreint ses propres règles du mode strict."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Mise à jour d\'Android…"</string> diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml index fcccc55d8dd6..bebc60d1b29c 100644 --- a/core/res/res/values-gl-rES/strings.xml +++ b/core/res/res/values-gl-rES/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostrar sempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Volve activar esta función en Configuración do sistema > Aplicacións > Descargadas."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"A aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> (proceso <xliff:g id="PROCESS">%2$s</xliff:g>) infrinxiu a súa política StrictMode autoaplicada."</string> <string name="smv_process" msgid="5120397012047462446">"O proceso <xliff:g id="PROCESS">%1$s</xliff:g> infrinxiu a política StrictMode de aplicación automática."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Estase actualizando Android…"</string> diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml index f9dee58ff2a0..34a1fcf31941 100644 --- a/core/res/res/values-gu-rIN/strings.xml +++ b/core/res/res/values-gu-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"સ્કેલ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"હંમેશા બતાવો"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"આને સિસ્ટમ સેટિંગ્સ > ઍપ્લિકેશનો > ડાઉનલોડ કરેલમાં ફરીથી સક્ષમ કરો."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> ઍપ્લિકેશન (<xliff:g id="PROCESS">%2$s</xliff:g> પ્રક્રિયા)એ તેની સ્વ-લાગુ કરેલ StrictMode નીતિનું ઉલ્લંઘન કર્યું છે."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> પ્રક્રિયાએ તેની સ્વ-લાગુ કરેલ StrictMode નીતિનું ઉલ્લંઘન કર્યું છે."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android અપગ્રેડ થઈ રહ્યું છે..."</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 4b0664fe6ffd..4fc8a926339d 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"स्केल"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"हमेशा दिखाएं"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"इसे सिस्टम सेटिंग > Apps > डाउनलोड किए गए में पुन: सक्षम करें."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"ऐप्स <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ने उसकी स्वयं लागू होने वाली StrictMode नीति का उल्लंघन किया है."</string> <string name="smv_process" msgid="5120397012047462446">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> ने उसकी स्व-प्रवर्तित StrictMode नीति का उल्लंघन किया है."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android अपग्रेड हो रहा है..."</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 766d10b63268..e23bdb27ac1e 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1038,6 +1038,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Mjerilo"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Uvijek prikaži"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Omogućiti to ponovo u Postavkama sustava > Aplikacije > Preuzimanja."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) prekršila je vlastito pravilo StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> prekršio je svoje vlastito pravilo StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android se nadograđuje…"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 5609b1f6cd8d..d921c0c66b04 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skála"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mindig megjelenik"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Újbóli engedélyezés itt: Rendszerbeállítások > Alkalmazások > Letöltve."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás (<xliff:g id="PROCESS">%2$s</xliff:g> folyamat) megsértette az általa kényszerített Szigorú üzemmód irányelvet."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> folyamat megsértette az általa kényszerített Szigorú üzemmód irányelvet."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android frissítése folyamatban..."</string> diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml index d2ff2831faa6..655a9f091212 100644 --- a/core/res/res/values-hy-rAM/strings.xml +++ b/core/res/res/values-hy-rAM/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Աստիճանակարգել"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Միշտ ցույց տալ"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Կրկին ակտիվացնել սա Համակարգի կարգավորումներում &gt Ծրագրեր > Ներբեռնումներ:"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> ծրագիրը (գործընթաց <xliff:g id="PROCESS">%2$s</xliff:g>) խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> գործընթացը խախտել է իր ինքնահարկադրված Խիստ ռեժիմ քաղաքականությունը:"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android-ը նորացվում է..."</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index da0afc83332c..bd172604d4b1 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Selalu tampilkan"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Aktifkan kembali dialog ini di Setelan sistem > Apl > Terunduh."</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak mendukung setelan Ukuran layar saat ini dan dapat menunjukkan perilaku yang tak diharapkan."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"Selalu tampilkan"</string> <string name="smv_application" msgid="3307209192155442829">"Apl <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) telah melanggar kebijakan StrictMode yang diberlakukannya sendiri."</string> <string name="smv_process" msgid="5120397012047462446">"Proses <xliff:g id="PROCESS">%1$s</xliff:g> telah melanggar kebijakan StrictMode yang diberlakukan secara otomatis."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android sedang meningkatkan versi..."</string> diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml index 661f5b52a86f..d3d6e58f7028 100644 --- a/core/res/res/values-is-rIS/strings.xml +++ b/core/res/res/values-is-rIS/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Breyta stærð"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Sýna alltaf"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Þú getur kveikt aftur á þessu undir Kerfisstillingar > Forrit > Sótt."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Forritið <xliff:g id="APPLICATION">%1$s</xliff:g> (ferli <xliff:g id="PROCESS">%2$s</xliff:g>) hefur brotið gegn eigin StrictMode-stefnu."</string> <string name="smv_process" msgid="5120397012047462446">"Forritið <xliff:g id="PROCESS">%1$s</xliff:g> braut gegn eigin StrictMode-stefnu."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android er að uppfæra…"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index d32e959c1c11..513c0fc9e54e 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Scala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostra sempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Riattivala in Impostazioni di sistema > Applicazioni > Scaricate."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"L\'applicazione <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) ha violato la norma StrictMode autoimposta."</string> <string name="smv_process" msgid="5120397012047462446">"Il processo <xliff:g id="PROCESS">%1$s</xliff:g> ha violato la norma StrictMode autoimposta."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Aggiornamento di Android..."</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 254bba93ea22..880aedce1d27 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"שינוי קנה-מידה"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"הצג תמיד"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"אפשר תכונה זו מחדש ב\'הגדרות מערכת\' < Google Apps < \'הורדות\'."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"האפליקציה <xliff:g id="APPLICATION">%1$s</xliff:g> (תהליך <xliff:g id="PROCESS">%2$s</xliff:g>) הפר את מדיניות StrictMode באכיפה עצמית שלו."</string> <string name="smv_process" msgid="5120397012047462446">"התהליך <xliff:g id="PROCESS">%1$s</xliff:g> הפר את מדיניות StrictMode באכיפה עצמית."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android מבצע שדרוג…"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index c7529b7537c9..c7c404e300b1 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"スケール"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"常に表示"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"[システム設定]>[アプリ]>[ダウンロード済み]で再度有効にします。"</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」は現在の [表示サイズ] 設定に対応していないため、予期しない動作が発生するおそれがあります。"</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"常に表示"</string> <string name="smv_application" msgid="3307209192155442829">"アプリ「<xliff:g id="APPLICATION">%1$s</xliff:g>」(プロセス「<xliff:g id="PROCESS">%2$s</xliff:g>」)でStrictModeポリシー違反がありました。"</string> <string name="smv_process" msgid="5120397012047462446">"プロセス<xliff:g id="PROCESS">%1$s</xliff:g>でStrictModeポリシー違反がありました。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Androidをアップグレードしています..."</string> diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml index 5f5ded96979f..f41b29f98964 100644 --- a/core/res/res/values-ka-rGE/strings.xml +++ b/core/res/res/values-ka-rGE/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"მასშტაბი"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ყოველთვის ჩვენება"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ხელახალი გააქტიურება განყოფილებაში: სისტემის პარამეტრები > აპები > ჩამოტვირთულები."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"აპმა <xliff:g id="APPLICATION">%1$s</xliff:g> (პროცესი <xliff:g id="PROCESS">%2$s</xliff:g>) დაარღვია საკუთარი StrictMode დებულება."</string> <string name="smv_process" msgid="5120397012047462446">"ამ პროცესმა <xliff:g id="PROCESS">%1$s</xliff:g> დააზიანა საკუთარი StrictMode დებულება."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android ახალ ვერსიაზე გადადის…"</string> diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml index c5c19c899126..0d9ac4db9647 100644 --- a/core/res/res/values-kk-rKZ/strings.xml +++ b/core/res/res/values-kk-rKZ/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Меже"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Үнемі көрсету"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Мұны «Жүйелік параметрлер» > «Қолданбалар» > «Жүктелгендер» тармағында қосыңыз."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> қолданбасы (<xliff:g id="PROCESS">%2$s</xliff:g> процесі) өзі қолданған StrictMode саясатын бұзды."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> үрдісі өздігінен күшіне енген ҚатаңРежим ережесін бұзды."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңартылуда…"</string> diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml index 36ed267ae735..558ffdcab275 100644 --- a/core/res/res/values-km-rKH/strings.xml +++ b/core/res/res/values-km-rKH/strings.xml @@ -1017,6 +1017,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"មាត្រដ្ឋាន"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"បង្ហាញជានិច្ច"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"បើកវាឡើងវិញក្នុងការកំណត់ប្រព័ន្ធ > កម្មវិធី > ទាញយក។"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"កម្មវិធី <xliff:g id="APPLICATION">%1$s</xliff:g> (ដំណើរការ <xliff:g id="PROCESS">%2$s</xliff:g>) បានបំពានគោលនយោបាយរបៀបតឹងរ៉ឹងអនុវត្តដោយខ្លួនឯង។"</string> <string name="smv_process" msgid="5120397012047462446">"ដំណើរការ <xliff:g id="PROCESS">%1$s</xliff:g> បានបំពានគោលនយោបាយរបៀបតឹងរឹងបង្ខំដោយខ្លួនឯង"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android កំពុងធ្វើបច្ចុប្បន្នភាព..."</string> diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml index b898e14dba21..60685783c2fd 100644 --- a/core/res/res/values-kn-rIN/strings.xml +++ b/core/res/res/values-kn-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"ಮಾಪಕ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ಯಾವಾಗಲೂ ತೋರಿಸಿ"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್ಗಳು > ಅಪ್ಲಿಕೇಶನ್ಗಳು > ಡೌನ್ಲೋಡ್ ಆಗಿರುವುದರಲ್ಲಿ ಇದನ್ನು ಮರು ಸಕ್ರಿಯಗೊಳಿಸಿ."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"ಅಪ್ಲಿಕೇಶನ್ <xliff:g id="APPLICATION">%1$s</xliff:g> (ಪ್ರಕ್ರಿಯೆಯು <xliff:g id="PROCESS">%2$s</xliff:g>) ತನ್ನ ಸ್ವಯಂ-ಜಾರಿ ಕಠಿಣ ಮೋಡ್ ನೀತಿಯನ್ನು ಉಲ್ಲಂಘನೆ ಮಾಡಿದೆ."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> ಪ್ರಕ್ರಿಯೆಯು ತನ್ನ ಸ್ವಯಂ-ಜಾರಿ ಕಠಿಣ ಮೋಡ್ ನೀತಿಯನ್ನು ಉಲ್ಲಂಘನೆ ಮಾಡಿದೆ."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android ಅಪ್ಗ್ರೇಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 8a4dbc92dc8f..56c5e6dbb883 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"배율"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"항상 표시"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"시스템 설정 > 앱 > 다운로드로 이동하여 이 모드를 다시 사용하도록 설정합니다."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"앱 <xliff:g id="APPLICATION">%1$s</xliff:g>(프로세스 <xliff:g id="PROCESS">%2$s</xliff:g>)이(가) 자체 시행 StrictMode 정책을 위반했습니다."</string> <string name="smv_process" msgid="5120397012047462446">"프로세스(<xliff:g id="PROCESS">%1$s</xliff:g>)가 자체 시행 StrictMode 정책을 위반했습니다."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android 업그레이드 중.."</string> diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml index 3ffc2b7b8f89..37d86f2b6e25 100644 --- a/core/res/res/values-ky-rKG/strings.xml +++ b/core/res/res/values-ky-rKG/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Шкала"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Ар дайым көрсөтүлсүн"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Муну тутум жөндөөлөрүнөн кайра иштетүү > Колдонмолор > Жүктөлүп алынган."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> колдонмосу (<xliff:g id="PROCESS">%2$s</xliff:g> процесси) өз алдынча иштеткен StrictMode саясатын бузду."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> процесси өзүнүн мажбурланган StrictMode саясатын бузуп койду."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android жаңыртылууда…"</string> diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml index 6fda52a78bf9..1ef76222c2ba 100644 --- a/core/res/res/values-lo-rLA/strings.xml +++ b/core/res/res/values-lo-rLA/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"ຂະໜາດ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ສະແດງຕະຫຼອດເວລາ"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ເປີດການເຮັດວຽກນີ້ຄືນໄດ້ໃນ ການຕັ້ງຄ່າລະບົບ > ແອັບຯ > ດາວໂຫລດແລ້ວ"</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ຮອງຮັບການຕັ້ງຄ່າຂະໜາດສະແດງຜົນປັດຈຸບັນ ແລະ ອາດມີຄວາມຜິດພາດໄດ້."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"ສະແດງທຸກເທື່ອ"</string> <string name="smv_application" msgid="3307209192155442829">"ແອັບຯ <xliff:g id="APPLICATION">%1$s</xliff:g> (ໂປຣເຊສ <xliff:g id="PROCESS">%2$s</xliff:g>) ໄດ້ລະເມີດນະໂຍບາຍ StrictMode ທີ່ບັງຄັບໃຊ້ດ້ວຍໂຕເອງ."</string> <string name="smv_process" msgid="5120397012047462446">"ໂປຣເຊສ <xliff:g id="PROCESS">%1$s</xliff:g> ລະເມີດນະໂຍບາຍບັງຄັບໃຊ້ເອງ StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"ກຳລັງອັບເກຣດ Android..."</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index adc071d428df..90b18a8b31d8 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Mastelis"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Visada rodyti"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Įgalinkite jį iš naujo nuėję į „Sistemos nustatymai“ > „Programos“ > „Atsisiųsta“."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Programa „<xliff:g id="APPLICATION">%1$s</xliff:g>“ (procesas „<xliff:g id="PROCESS">%2$s</xliff:g>“) pažeidė savo vykdomą „StrictMode“ politiką."</string> <string name="smv_process" msgid="5120397012047462446">"„<xliff:g id="PROCESS">%1$s</xliff:g>“ procesas pažeidė savo vykdomą „StrictMode“ politiką."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"„Android“ naujovinama..."</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 47f1f2641bb0..6615d400fc1c 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1038,6 +1038,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Mērogs"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Rādīt vienmēr"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Atkārtoti iespējojiet šeit: Sistēmas iestatījumi > Lietotnes > Lejupielādētās."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Lietotne <xliff:g id="APPLICATION">%1$s</xliff:g> (process <xliff:g id="PROCESS">%2$s</xliff:g>) ir pārkāpusi savu pašieviesto StrictMode politiku."</string> <string name="smv_process" msgid="5120397012047462446">"Process <xliff:g id="PROCESS">%1$s</xliff:g> ir pārkāpis savu pašieviesto StrictMode politiku."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Notiek Android jaunināšana..."</string> diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml index 845a42dab6d2..1d699df3a97c 100644 --- a/core/res/res/values-mk-rMK/strings.xml +++ b/core/res/res/values-mk-rMK/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Размер"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Покажи секогаш"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Повторно овозможете го ова во Системски поставки > Апликации > Преземено."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Апликацијата <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) ја прекрши политиката StrictMode што си ја наметна врз себеси."</string> <string name="smv_process" msgid="5120397012047462446">"Процесот <xliff:g id="PROCESS">%1$s</xliff:g> ја прекрши својата самонаметната политика на строг режим."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android се ажурира…"</string> diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml index 7b18d91dc947..6c757e07089d 100644 --- a/core/res/res/values-ml-rIN/strings.xml +++ b/core/res/res/values-ml-rIN/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"സ്കെയിൽ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"എപ്പോഴും പ്രദര്ശിപ്പിക്കുക"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"സിസ്റ്റം ക്രമീകരണങ്ങൾ > അപ്ലിക്കേഷനുകൾ > ഡൗൺലോഡുചെയ്തവ എന്നതിൽ ഇത് വീണ്ടും പ്രവർത്തനക്ഷമമാക്കുക."</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"നിലവിലെ ഡിസ്പ്ലേ വലുപ്പ ക്രമീകരണത്തെ <xliff:g id="APP_NAME">%1$s</xliff:g> പിന്തുണയ്ക്കുന്നില്ല, അതിനാൽ പ്രതീക്ഷിക്കാത്ത തരത്തിൽ ആപ്പ് പ്രവർത്തിച്ചേക്കാം."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"എല്ലായ്പ്പോഴും ദൃശ്യമാക്കുക"</string> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> എന്ന അപ്ലിക്കേഷൻ (<xliff:g id="PROCESS">%2$s</xliff:g> പ്രോസസ്സ്) അതിന്റെ സ്വയം നിർബന്ധിത StrictMode നയം ലംഘിച്ചു."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> എന്ന പ്രോസസ്സ് അതിന്റെ സ്വയം നടപ്പിലാക്കിയ StrictMode നയം ലംഘിച്ചു."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android അപ്ഗ്രേഡുചെയ്യുന്നു…"</string> diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml index 4f10c45d2986..f54a485768df 100644 --- a/core/res/res/values-mn-rMN/strings.xml +++ b/core/res/res/values-mn-rMN/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Цар хэмжээ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Байнга харуулах"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Энийг Системийн тохиргоо > Апп > Татаж авсан дотроос дахин идэвхтэй болгох боломжтой."</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь Дэлгэцийн хэмжээний одоогийн тохиргоог дэмждэггүй учир буруу ажиллаж болзошгүй."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"Байнга харуулах"</string> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> апп (<xliff:g id="PROCESS">%2$s</xliff:g> процесс) өөрийнхөө StrictMode бодлогыг зөрчив."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> процесс өөрийнхөө StrictMode бодлогыг зөрчив."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Андройдыг дэвшүүлж байна…"</string> diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml index e2d11c8dc6bf..5e2bf549c955 100644 --- a/core/res/res/values-mr-rIN/strings.xml +++ b/core/res/res/values-mr-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"स्केल"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"नेहमी दर्शवा"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"सिस्टीम सेटिंग्ज > Apps > डाउनलोड केलेले मध्ये हे पुन्हा-सक्षम करा."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"अॅप <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ने तिच्या स्वयं-लागू केलेल्या StrictMode धोरणाचे उल्लंघन केले आहे."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> प्रक्रियेने तिच्या स्वतः-लागू केलेल्या StrictMode धोरणाचे उल्लंघन केले."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android श्रेणीसुधारित होत आहे..."</string> diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml index 894552415671..f5a93038f16b 100644 --- a/core/res/res/values-ms-rMY/strings.xml +++ b/core/res/res/values-ms-rMY/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Sentiasa tunjukkan"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Dayakan semula kod kompak ini tetapan Sistem > Apl > Dimuat turun."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Apl <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) telah melanggar dasar Mod Tegasnya sendiri."</string> <string name="smv_process" msgid="5120397012047462446">"Proses <xliff:g id="PROCESS">%1$s</xliff:g> telah melanggar dasar Mod Tegasnya sendiri."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android sedang menaik taraf..."</string> diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml index 76ac21510599..2eb1b0d94892 100644 --- a/core/res/res/values-my-rMM/strings.xml +++ b/core/res/res/values-my-rMM/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"စကေး"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"အမြဲပြသရန်"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ဒါကို စနစ် ဆက်တင်များထဲ ပြန်ဖွင့်ပေးရန် > Apps > ဒေါင်းလုဒ် လုပ်ပြီး။"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"app <xliff:g id="APPLICATION">%1$s</xliff:g> (လုပ်ငန်းစဉ် <xliff:g id="PROCESS">%2$s</xliff:g>) က ကိုယ်တိုင် ပြဌာန်းခဲ့သည့် StrictMode မူဝါဒကို ချိုးဖောက်ခဲ့သည်။"</string> <string name="smv_process" msgid="5120397012047462446">"ဤ<xliff:g id="PROCESS">%1$s</xliff:g>ဖြစ်စဥ်မှာ ကိုယ်တိုင်အကျိုးသက်ရောက်သော StrictModeမူဝါဒအား ချိုးဖောက်သည်"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"အန်ဒရွိုက်ကို မွမ်းမံနေ…"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 860ff12da9b7..768e19171b88 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Vis alltid"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Reaktiver dette i systeminnstillingene > Apper > Nedlastet."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Appen <xliff:g id="APPLICATION">%1$s</xliff:g> (prosessen <xliff:g id="PROCESS">%2$s</xliff:g>) har brutt de selvpålagte StrictMode-retningslinjene."</string> <string name="smv_process" msgid="5120397012047462446">"Prosessen<xliff:g id="PROCESS">%1$s</xliff:g> har brutt de selvpålagte StrictMode-retningslinjene."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android oppgraderes …"</string> diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml index 1ea7dbf614c4..138c67f3bab9 100644 --- a/core/res/res/values-ne-rNP/strings.xml +++ b/core/res/res/values-ne-rNP/strings.xml @@ -1021,6 +1021,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"स्केल"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"सधैँ देखाउनुहोस्"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"प्रणाली सेटिङहरूमा यसलाई पुनःसक्षम गराउनुहोस् > अनुप्रयोगहरू > डाउनलोड गरेको।"</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले हालको प्रदर्शनको आकार सम्बन्धी सेटिङलाई समर्थन गर्दैन र अप्रत्याशित तरिकाले व्यवहार गर्न सक्छ।"</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"सधैँ देखाउनुहोस्"</string> <string name="smv_application" msgid="3307209192155442829">"अनुप्रयोग <xliff:g id="APPLICATION">%1$s</xliff:g> (प्रक्रिया <xliff:g id="PROCESS">%2$s</xliff:g>) ले यसको स्वयं-लागु गरिएको स्ट्रिटमोड नीति उलङ्घन गरेको छ।"</string> <string name="smv_process" msgid="5120397012047462446">"प्रक्रिया <xliff:g id="PROCESS">%1$s</xliff:g> यसको आफ्नै कडामोड नीतिका कारण उल्लङ्घन गरिएको छ।"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"एन्ड्रोइड अपग्रेड हुँदैछ…"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index c3eee67b6042..a7124d8d571f 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Schaal"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Altijd weergeven"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"U kunt dit opnieuw inschakelen via Systeeminstellingen > Apps > Gedownload."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"De app <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) heeft het zelf afgedwongen StrictMode-beleid geschonden."</string> <string name="smv_process" msgid="5120397012047462446">"Het proces <xliff:g id="PROCESS">%1$s</xliff:g> heeft het zelf afgedwongen StrictMode-beleid geschonden."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android wordt bijgewerkt..."</string> diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml index d9156b5168aa..99baac99e840 100644 --- a/core/res/res/values-pa-rIN/strings.xml +++ b/core/res/res/values-pa-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"ਸਕੇਲ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ਹਮੇਸ਼ਾਂ ਦਿਖਾਓ"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"ਸਿਸਟਮ ਸੈਟਿੰਗਾਂ > ਐਪਸ > ਡਾਊਨਲੋਡ ਕੀਤਿਆਂ ਵਿੱਚ ਇਸਨੂੰ ਮੁੜ-ਸਮਰੱਥ ਬਣਾਓ।"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"ਐਪ <xliff:g id="APPLICATION">%1$s</xliff:g> (ਪ੍ਰਕਿਰਿਆ<xliff:g id="PROCESS">%2$s</xliff:g>) ਨੇ ਆਪਣੀ ਖੁਦ-ਲਾਗੂ ਕੀਤੀ ਸਟ੍ਰਿਕਟਮੋਡ ਨੀਤੀ ਦੀ ਉਲੰਘਣਾ ਕੀਤੀ ਹੈ।"</string> <string name="smv_process" msgid="5120397012047462446">"ਪ੍ਰਕਿਰਿਆ <xliff:g id="PROCESS">%1$s</xliff:g> ਨੇ ਆਪਣੀ ਖੁਦ-ਲਾਗੂ ਕੀਤੀ ਸਟ੍ਰਿਕਟਮੋਡ ਨੀਤੀ ਦੀ ਉਲੰਘਣਾ ਕੀਤੀ ਹੈ।"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android ਅਪਗ੍ਰੇਡ ਕਰ ਰਿਹਾ ਹੈ…"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 2291d03763ca..82926822e204 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Skala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Zawsze pokazuj"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Włącz ponownie, wybierając Ustawienia systemowe > Aplikacje > Pobrane."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikacja <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) naruszyła wymuszone przez siebie zasady StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> naruszył wymuszone przez siebie zasady StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android jest uaktualniany..."</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 6907a6cc21c2..d9437070a0e2 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostrar sempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Reativar isso em Configurações do sistema > Apps > Transferidos."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"O app <xliff:g id="APPLICATION">%1$s</xliff:g>, processo <xliff:g id="PROCESS">%2$s</xliff:g>, violou a política StrictMode imposta automaticamente."</string> <string name="smv_process" msgid="5120397012047462446">"O processo <xliff:g id="PROCESS">%1$s</xliff:g> violou a política StrictMode imposta automaticamente."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 221d0550a55e..e0116cba7d95 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostrar sempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Reative este modo nas Definições do Sistema > Aplicações > Transferidas."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"A aplicação <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) violou a política StrictMode auto-imposta."</string> <string name="smv_process" msgid="5120397012047462446">"O processo <xliff:g id="PROCESS">%1$s</xliff:g> violou a política StrictMode auto-imposta."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está a ser atualizado..."</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 6907a6cc21c2..d9437070a0e2 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Escala"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Mostrar sempre"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Reativar isso em Configurações do sistema > Apps > Transferidos."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"O app <xliff:g id="APPLICATION">%1$s</xliff:g>, processo <xliff:g id="PROCESS">%2$s</xliff:g>, violou a política StrictMode imposta automaticamente."</string> <string name="smv_process" msgid="5120397012047462446">"O processo <xliff:g id="PROCESS">%1$s</xliff:g> violou a política StrictMode imposta automaticamente."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"O Android está sendo atualizado..."</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index fe19d393f481..7aa3b23ed6c5 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1038,6 +1038,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Scară"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Afișați întotdeauna"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Reactivați acest mod din Setări de sistem > Aplicații > Descărcate."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplicația <xliff:g id="APPLICATION">%1$s</xliff:g> (procesul <xliff:g id="PROCESS">%2$s</xliff:g>) a încălcat propria politică StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Procesul <xliff:g id="PROCESS">%1$s</xliff:g> a încălcat propria politică StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android trece la o versiune superioară..."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index e885d70e95d7..686aee209b3b 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Масштаб"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Всегда показывать"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Включить эту функцию можно в меню \"Настройки > Приложения > Загруженные\"."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Приложение \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" (процесс: <xliff:g id="PROCESS">%2$s</xliff:g>) нарушило собственную политику StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Процесс <xliff:g id="PROCESS">%1$s</xliff:g> нарушил собственную политику StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Обновление Android..."</string> diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml index 5626d47d6c94..d5f915889ecd 100644 --- a/core/res/res/values-si-rLK/strings.xml +++ b/core/res/res/values-si-rLK/strings.xml @@ -1017,6 +1017,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"පරිමාණය"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"සැමවිටම පෙන්වන්න"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"පද්ධති සැකසීම් තුළ මෙය නැවත ක්රියාත්මක කරන්න > යෙදුම් > බාගන්නා ලදි."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> යෙදුම (<xliff:g id="PROCESS">%2$s</xliff:g> ක්රියාවලිය) එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> ක්රියාවලිය එහි StrictMode කොන්දේසිය උල්ලංඝනය කර ඇත."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android උත්ශ්රේණි වෙමින් පවතී..."</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 54337baff2d4..9f4f56b3d1fe 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Prispôsobiť veľkosť"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Vždy zobraziť"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Povoľte to znova v sekcii Nastavenia systému > Aplikácie > Stiahnuté súbory."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikácia <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) porušila svoje vlastné vynútené pravidlá StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> porušil svoje vlastné vynútené pravidlá StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Prebieha inovácia systému Android..."</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index f13d1aa86398..a678c4a8528e 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Lestvica"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Vedno pokaži"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Znova omogočite to v sistemskih nastavitvah > Aplikacije > Preneseno."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) krši svoj samouveljavljiv pravilnik o strogem načinu."</string> <string name="smv_process" msgid="5120397012047462446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> krši svoj samoizvedljivi pravilnik o strogem načinu."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Poteka nadgradnja Androida ..."</string> diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml index c3911eb153bd..c10b33bc1bf5 100644 --- a/core/res/res/values-sq-rAL/strings.xml +++ b/core/res/res/values-sq-rAL/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Shkalla"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Shfaq gjithnjë"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Aktivizoje sërish këtë te \"Cilësimet e sistemit\" > \"Aplikacionet\" > \"Të shkarkuara\"."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Aplikacioni <xliff:g id="APPLICATION">%1$s</xliff:g> (procesi <xliff:g id="PROCESS">%2$s</xliff:g>) ka shkelur politikën e tij të vetë-imponuar \"Modaliteti i ashpër\" (StrictMode)."</string> <string name="smv_process" msgid="5120397012047462446">"Procesi <xliff:g id="PROCESS">%1$s</xliff:g> ka shkelur politikën e tij të vetë-imponuar \"Modaliteti i rreptë\" (StrictMode)"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"\"Androidi\" po përditësohet…"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 5b6dcd4287a5..3f78e0b7a8b1 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1038,6 +1038,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Размера"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Увек приказуј"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Поново омогућите у менију Системска подешавања > Апликације > Преузето."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Апликација <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) је прекршила самонаметнуте StrictMode смернице."</string> <string name="smv_process" msgid="5120397012047462446">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> је прекршио самонаметнуте StrictMode смернице."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android се надограђује…"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 9f784113d77a..835da4dd8fcb 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Anpassning"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Visa alltid"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Aktivera detta igen i Systeminställningar > Appar > Hämtat."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Appen <xliff:g id="APPLICATION">%1$s</xliff:g> (processen <xliff:g id="PROCESS">%2$s</xliff:g>) har brutit mot sin egen StrictMode-policy."</string> <string name="smv_process" msgid="5120397012047462446">"Processen <xliff:g id="PROCESS">%1$s</xliff:g> har brutit mot sin egen StrictMode-policy."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android uppgraderas ..."</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 7ceef61f21ab..ba573aab5680 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1013,6 +1013,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Kipimo"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Onyesha kila wakati"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Wezesha tena hii katika mipangilio ya Mfumo > Programu > iliyopakuliwa."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Programu <xliff:g id="APPLICATION">%1$s</xliff:g> (utaratibu <xliff:g id="PROCESS">%2$s</xliff:g>) imeenda kinyume na sera yake ya StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Shughuli ya <xliff:g id="PROCESS">%1$s</xliff:g> imeenda kinyume na kulazimisha sera yake ya StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Toleo jipya la Android linawekwa..."</string> diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml index 35f4254f91ca..308a0f5579b6 100644 --- a/core/res/res/values-ta-rIN/strings.xml +++ b/core/res/res/values-ta-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"அளவு"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"எப்போதும் காட்டு"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"சிஸ்டம் அமைப்பு > பயன்பாடுகள் > பதிவிறக்கம் என்பதில் இதை மீண்டும் இயக்கவும்."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> பயன்பாடு (செயல்முறை <xliff:g id="PROCESS">%2$s</xliff:g>), தனது சுய-செயலாக்க StrictMode கொள்கையை மீறியது."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> செயல்முறை, தனது சுய-செயலாக்க StrictMode கொள்கையை மீறியது."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android மேம்படுத்தப்படுகிறது…"</string> diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml index bee79def214f..66e7668f4760 100644 --- a/core/res/res/values-te-rIN/strings.xml +++ b/core/res/res/values-te-rIN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"ప్రమాణం"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ఎల్లప్పుడూ చూపు"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"సిస్టమ్ సెట్టింగ్లు > అనువర్తనాలు > డౌన్లోడ్ చేసినవిలో దీన్ని పునఃప్రారంభించండి."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> అనువర్తనం (<xliff:g id="PROCESS">%2$s</xliff:g> ప్రాసెస్) అది స్వయంగా అమలు చేసే ఖచ్చితమైన మోడ్ విధానాన్ని ఉల్లంఘించింది."</string> <string name="smv_process" msgid="5120397012047462446">"ప్రక్రియ <xliff:g id="PROCESS">%1$s</xliff:g> అది స్వయంగా అమలు చేసే ఖచ్చితమైన మోడ్ విధానాన్ని ఉల్లంఘించింది."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android అప్గ్రేడ్ అవుతోంది…"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index ef1f9a154c93..7781993794fc 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"สเกล"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"แสดงเสมอ"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"เปิดใช้งานอีกครั้งในการตั้งค่าระบบ > แอปพลิเคชัน > ดาวน์โหลด"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"แอปพลิเคชัน <xliff:g id="APPLICATION">%1$s</xliff:g> (กระบวนการ <xliff:g id="PROCESS">%2$s</xliff:g>) ละเมิดนโยบาย StrictMode ที่บังคับใช้ด้วยตัวเอง"</string> <string name="smv_process" msgid="5120397012047462446">"กระบวนการ <xliff:g id="PROCESS">%1$s</xliff:g> ละเมิดนโยบาย StrictMode ที่บังคับใช้ด้วยตัวเอง"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"กำลังอัปเกรด Android ..."</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 1bdc63a45d1b..a88e6b37b229 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Sukat"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Palaging ipakita"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Muling paganahin ito sa mga setting ng System > Apps > Na-download."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Ang app na <xliff:g id="APPLICATION">%1$s</xliff:g> (prosesong <xliff:g id="PROCESS">%2$s</xliff:g>) ay lumabag sa sarili nitong ipinapatupad na patakarang StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Ang prosesong <xliff:g id="PROCESS">%1$s</xliff:g> ay lumabag sa sarili nitong ipinapatupad na patakarang StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Nag-a-upgrade ang Android…"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 8f2dc759ad25..697c38ce8f23 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Ölçek"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Her zaman göster"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Bunu Sistem ayarları > Uygulamalar > İndirilenler bölümünden yeniden etkinleştirin."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"<xliff:g id="APPLICATION">%1$s</xliff:g> uygulaması (<xliff:g id="PROCESS">%2$s</xliff:g> işlemi) kendiliğinden uyguladığı StrictMode politikasını ihlal etti."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> işlemi kendiliğinden uyguladığı StrictMode politikasını ihlal etti."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android yeni sürüme geçiriliyor..."</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 57ff67f8717b..885ed8981a25 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1061,6 +1061,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Масштаб"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Завжди показувати"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Знову ввімкнути це в меню Налаштування системи > Програми > Завантажені."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Програма <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) порушила свою самозастосовну політику StrictMode."</string> <string name="smv_process" msgid="5120397012047462446">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> порушив свою самозастосовну політику StrictMode."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android оновлюється..."</string> diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml index a2dd131322ee..99a299f45eb8 100644 --- a/core/res/res/values-ur-rPK/strings.xml +++ b/core/res/res/values-ur-rPK/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"پیمانہ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"ہمیشہ دکھائیں"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"سسٹم ترتیبات > ایپس > ڈاؤن لوڈ کردہ میں اسے دوبارہ فعال کریں۔"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"ایپ <xliff:g id="APPLICATION">%1$s</xliff:g> (کارروائی <xliff:g id="PROCESS">%2$s</xliff:g>) نے خود نافذ کی گئی StrictMode پالیسی کی خلاف ورزی کی ہے۔"</string> <string name="smv_process" msgid="5120397012047462446">"کارروائی <xliff:g id="PROCESS">%1$s</xliff:g> نے اپنی ذاتی طور پر نافذ کردہ StrictMode پلیسی کی خلاف ورزی کی ہے۔"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android اپ گریڈ ہو رہا ہے…"</string> diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml index fb39be2997f1..c73a06f6a846 100644 --- a/core/res/res/values-uz-rUZ/strings.xml +++ b/core/res/res/values-uz-rUZ/strings.xml @@ -526,7 +526,7 @@ <string name="policydesc_resetPassword" msgid="1278323891710619128">"Ekran qulfini o‘zgartiradi."</string> <string name="policylab_forceLock" msgid="2274085384704248431">"Ekranni qulflash"</string> <string name="policydesc_forceLock" msgid="1141797588403827138">"Ekranning qachon va qanday qulflanishini boshqaradi."</string> - <string name="policylab_wipeData" msgid="3910545446758639713">"Barcha ma’lumotlarni tozalash"</string> + <string name="policylab_wipeData" msgid="3910545446758639713">"Barcha ma’lumotlarni o‘chirib tashlash"</string> <string name="policydesc_wipeData" product="tablet" msgid="4306184096067756876">"Planshetdagi barcha ma’lumotlarni ogohlantirishsiz zavod sozlamalarini tiklash orqali o‘chirib tashlaydi."</string> <string name="policydesc_wipeData" product="tv" msgid="5816221315214527028">"Zavod sozlamalarini tiklaydi va televizordagi barcha ma’lumotlarni ogohlantirishsiz o‘chirib tashlaydi."</string> <string name="policydesc_wipeData" product="default" msgid="5096895604574188391">"Telefondagi barcha ma’lumotlarni ogohlantirishsiz zavod sozlamalarini tiklash orqali o‘chirib tashlaydi."</string> @@ -537,7 +537,7 @@ <string name="policylab_setGlobalProxy" msgid="2784828293747791446">"Qurilmaga global proksi o‘rnatish"</string> <string name="policydesc_setGlobalProxy" msgid="8459859731153370499">"Qoida faollashtirilgan vaqtda ishlatiladigan qurilmaning global proksi-serverini o‘rnatadi. Faqat qurilma egasi global proksi-serverini o‘rnatishi mumkin."</string> <string name="policylab_expirePassword" msgid="5610055012328825874">"Parol muddatini o‘rnatish"</string> - <string name="policydesc_expirePassword" msgid="5367525762204416046">"Ekran qulfi paroli, PIN kodi yoki chizmali paroli o‘zgartiriladigan muddatni o‘zgartiradi."</string> + <string name="policydesc_expirePassword" msgid="5367525762204416046">"Ekran qulfi paroli, PIN kodi yoki grafik kaliti o‘zgartiriladigan muddatni o‘zgartiradi."</string> <string name="policylab_encryptedStorage" msgid="8901326199909132915">"Xotirani kodlashni o‘rnatish"</string> <string name="policydesc_encryptedStorage" msgid="2637732115325316992">"Zaxiralangan ilovalar ma‘lumotlarini kodlashni talab qiladi."</string> <string name="policylab_disableCamera" msgid="6395301023152297826">"Kameralarni o‘chirish"</string> @@ -672,7 +672,7 @@ <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Ekran qulflangan."</string> <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Qulfdan chiqarish yoki favqulodda qo‘ng‘iroqni amalga oshirish uchun \"Menyu\"ni bosing."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Qulfni ochish uchun \"Menyu\"ga bosing."</string> - <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Qulfni ochish uchun namuna ustiga chizing"</string> + <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Qulfni ochish uchun grafik kalitni chizing"</string> <string name="lockscreen_emergency_call" msgid="5298642613417801888">"Favqulodda chaqiruv"</string> <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Qo‘ng‘iroqni qaytarish"</string> <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"To‘g‘ri!"</string> @@ -700,12 +700,12 @@ <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"Foydalanuvchi qo‘llanmasiga qarang yoki Abonentlarni qo‘llab-quvvatlash markaziga murojaat qiling."</string> <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM karta qulflangan."</string> <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM karta qulfdan chiqarilmoqda…"</string> - <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string> + <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Siz parolni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string> <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Siz PIN-kodni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string> - <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi. \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qayta urining."</string> - <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="5316664559603394684">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qaytadan urining."</string> - <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qayta urining."</string> + <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi. \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qayta urining."</string> + <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="5316664559603394684">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qaytadan urining."</string> + <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qayta urining."</string> <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Planshet qulfini <xliff:g id="NUMBER_0">%1$d</xliff:g> marta ochishga urinib ko‘rdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng, planshet ishlab chiqarilgan holatiga tiklanadi va barcha foydalanuvchi ma’lumotlari yo‘qoladi."</string> <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="950408382418270260">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizda zavod sozlamalari qayta tiklanadi hamda undagi barcha ma’lumotlaringiz o‘chib ketadi."</string> <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="8603565142156826565">"Telefon qulfini <xliff:g id="NUMBER_0">%1$d</xliff:g> marta ochishga urinib ko‘rdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng, telefon ishlab chiqarilgan holatiga tiklanadi va barcha foydalanuvchi ma’lumotlari yo‘qoladi."</string> @@ -713,9 +713,9 @@ <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="3195755534096192191">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Endi, televizoringizda zavod sozlamalari qayta tiklanadi."</string> <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Telefon qulfini <xliff:g id="NUMBER">%d</xliff:g> marta ochishga urinib ko‘rdingiz. Telefon hozir ishlab chiqarilgan holatiga tiklanadi."</string> <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> - <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Chizma namunasi yodingizdan chiqdimi?"</string> + <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Grafik kalit esingizdan chiqdimi?"</string> <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Qulfni ochish hisobi"</string> - <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Chizmali parolni ochishga juda ko‘p urinildi"</string> + <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Grafik kalit juda ko‘p marta chizildi"</string> <string name="lockscreen_glogin_instructions" msgid="3931816256100707784">"Qulfni ochish uchun Google hisobingiz bilan kiring."</string> <string name="lockscreen_glogin_username_hint" msgid="8846881424106484447">"Foydalanuvchi nomi (e-pochta)"</string> <string name="lockscreen_glogin_password_hint" msgid="5958028383954738528">"Parol"</string> @@ -726,12 +726,12 @@ <string name="lockscreen_unlock_label" msgid="737440483220667054">"Qulfdan chiqarish"</string> <string name="lockscreen_sound_on_label" msgid="9068877576513425970">"Ovozni yoqish"</string> <string name="lockscreen_sound_off_label" msgid="996822825154319026">"Ovozni o‘chirish"</string> - <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"Chizma namunasi ishga tushirildi"</string> - <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"Chizma namunasi tozalandi"</string> + <string name="lockscreen_access_pattern_start" msgid="3941045502933142847">"Grafik kalitni chizish boshlandi"</string> + <string name="lockscreen_access_pattern_cleared" msgid="5583479721001639579">"Grafik kalit tozalandi"</string> <string name="lockscreen_access_pattern_cell_added" msgid="6756031208359292487">"Katak qo‘shildi"</string> <string name="lockscreen_access_pattern_cell_added_verbose" msgid="7264580781744026939">"<xliff:g id="CELL_INDEX">%1$s</xliff:g> katak qo‘shildi"</string> - <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"Chizma namunasi tugatildi"</string> - <string name="lockscreen_access_pattern_area" msgid="400813207572953209">"Chizmali kalit hududi."</string> + <string name="lockscreen_access_pattern_detected" msgid="4988730895554057058">"Grafik kalitni chizish tugallandi"</string> + <string name="lockscreen_access_pattern_area" msgid="400813207572953209">"Grafik kalit chiziladigan hudud."</string> <string name="keyguard_accessibility_widget_changed" msgid="5678624624681400191">"%1$s. Vidjet %2$d / %3$d."</string> <string name="keyguard_accessibility_add_widget" msgid="8273277058724924654">"Vidjet qo‘shish."</string> <string name="keyguard_accessibility_widget_empty_slot" msgid="1281505703307930757">"Bo‘sh"</string> @@ -747,11 +747,11 @@ <string name="keyguard_accessibility_widget_deleted" msgid="4426204263929224434">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> vidjeti o‘chirildi."</string> <string name="keyguard_accessibility_expand_lock_area" msgid="519859720934178024">"Qulfni ochish maydonini kengaytirish."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2959928478764697254">"Qulfni silab ochish"</string> - <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Chizmali qulfni ochish."</string> + <string name="keyguard_accessibility_pattern_unlock" msgid="1490840706075246612">"Grafik kalit bilan ochish."</string> <string name="keyguard_accessibility_face_unlock" msgid="4817282543351718535">"Qulfni yuzni tanitib ochish"</string> <string name="keyguard_accessibility_pin_unlock" msgid="2469687111784035046">"Pin qulfini ochish."</string> <string name="keyguard_accessibility_password_unlock" msgid="7675777623912155089">"Parolli qulfni ochish."</string> - <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Chizmali qulf maydoni."</string> + <string name="keyguard_accessibility_pattern_area" msgid="7679891324509597904">"Grafik kalit chiziladigan hudud."</string> <string name="keyguard_accessibility_slide_area" msgid="6736064494019979544">"Maydonni silang"</string> <string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string> <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Masshtab"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Doimo ko‘rsatish"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Uni Tizim sozlamalari > Ilovalar > Yuklab olingan menyusidan qayta yoqing."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"“<xliff:g id="APPLICATION">%1$s</xliff:g>” ilovasi (jarayaon: <xliff:g id="PROCESS">%2$s</xliff:g>) o‘zining StrictMode qoidasini buzdi."</string> <string name="smv_process" msgid="5120397012047462446">"<xliff:g id="PROCESS">%1$s</xliff:g> jarayoni o‘zining o‘zi-bajaruvchi StrictMode siyosatini buzdi."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android yangilanmoqda…"</string> @@ -1378,8 +1382,8 @@ <string name="display_manager_overlay_display_name" msgid="5142365982271620716">"Tasvir uzatish #<xliff:g id="ID">%1$d</xliff:g>"</string> <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", xavfsiz"</string> - <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Chizmali parol unutilgan"</string> - <string name="kg_wrong_pattern" msgid="1850806070801358830">"Chizmali kalit noto‘g‘ri"</string> + <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Grafik kalit esimdan chiqdi"</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Grafik kalit noto‘g‘ri"</string> <string name="kg_wrong_password" msgid="2333281762128113157">"Parol noto‘g‘ri"</string> <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN-kod noto‘g‘ri"</string> <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> @@ -1396,7 +1400,7 @@ <string name="kg_invalid_sim_puk_hint" msgid="6025069204539532000">"PUK kod 8 ta raqam bo‘lishi shart."</string> <string name="kg_invalid_puk" msgid="3638289409676051243">"To‘g‘ri PUK kodni qayta kiriting. Qayta-qayta urinishlar SIM kartani butunlay o‘chirib qo‘yadi."</string> <string name="kg_invalid_confirm_pin_hint" product="default" msgid="7003469261464593516">"PIN-kod mos kelmadi"</string> - <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Chizmali parolni ochishga juda ko‘p urinildi"</string> + <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"Grafik kalit juda ko‘p marta chizildi"</string> <string name="kg_login_instructions" msgid="1100551261265506448">"Qulfni ochish uchun Google hisobingiz bilan kiring."</string> <string name="kg_login_username_hint" msgid="5718534272070920364">"Foydalanuvchi nomi (e-pochta)"</string> <string name="kg_login_password_hint" msgid="9057289103827298549">"Parol"</string> @@ -1406,16 +1410,16 @@ <string name="kg_login_checking_password" msgid="1052685197710252395">"Hisob tekshirilmoqda…"</string> <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Siz PIN-kodni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Siz parolni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> - <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Siz planshet qulfini ochish uchun <xliff:g id="NUMBER_0">%1$d</xliff:g> marta muvaffaqiyatsiz urindingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng planshetning zavod sozlamalari tiklanadi va barcha foydalanuvchi ma’lumotlari o‘chiriladi."</string> <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="5621231220154419413">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizda zavod sozlamalari qayta tiklanadi hamda undagi barcha ma’lumotlaringiz o‘chib ketadi."</string> <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Siz telefon qulfini ochish uchun <xliff:g id="NUMBER_0">%1$d</xliff:g> marta muvaffaqiyatsiz urindingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng telefonning zavod sozlamalari tiklanadi va barcha foydalanuvchi ma’lumotlari o‘chiriladi."</string> <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Planshet qulfini ochish uchun <xliff:g id="NUMBER">%d</xliff:g> marta muvaffaqiyatsiz urinib ko‘rdingiz. Planshetning hozir zavod sozlamari tiklanadi."</string> <string name="kg_failed_attempts_now_wiping" product="tv" msgid="4987878286750741463">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Endi, televizoringizda zavod sozlamalari qayta tiklanadi."</string> <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Telefon qulfini ochish uchun <xliff:g id="NUMBER">%d</xliff:g> marta muvaffaqiyatsiz urinib ko‘rdingiz. Telefonning hozir zavod sozlamari tiklanadi."</string> - <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, planshet qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> - <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4224651132862313471">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun sizda e-pochta hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qaytadan urining."</string> - <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri chizdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, telefon qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, planshet qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> + <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4224651132862313471">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun sizda e-pochta hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng qaytadan urining."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri chizdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, telefon qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"O‘chirish"</string> <string name="safe_media_volume_warning" product="default" msgid="2276318909314492312">"Ovoz balandligi tavsiya etilgan darajadan ham yuqori ko‘tarilsinmi?\n\nUzoq vaqt davomida baland ovozda tinglash eshitish qobiliyatingizga salbiy ta’sir ko‘rsatishi mumkin."</string> @@ -1550,7 +1554,7 @@ <string name="lock_to_app_start" msgid="6643342070839862795">"Ekran qadab qo‘yildi"</string> <string name="lock_to_app_exit" msgid="8598219838213787430">"Ekran bo‘shatildi"</string> <string name="lock_to_app_unlock_pin" msgid="2552556656504331634">"Yechishda PIN-kod so‘ralsin"</string> - <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Bo‘shatishdan oldin chizmali parol so‘ralsin"</string> + <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Yechishdan oldin grafik kalit so‘ralsin"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Bo‘shatishdan oldin parol so‘ralsin"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Administratoringiz tomonidan o‘rnatilgan"</string> <string name="package_updated_device_owner" msgid="8856631322440187071">"Administratoringiz tomonidan yangilandi"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 9ad9737a5f09..3b86a379f8ce 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Tỷ lệ"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Luôn hiển thị"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Bật lại chế độ này trong cài đặt Hệ thống > Ứng dụng > Đã tải xuống."</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"<xliff:g id="APP_NAME">%1$s</xliff:g> không hỗ trợ cài đặt kích thước Màn hình hiện tại và có thể hoạt động không như mong đợi."</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"Luôn hiển thị"</string> <string name="smv_application" msgid="3307209192155442829">"Ứng dụng <xliff:g id="APPLICATION">%1$s</xliff:g> (quá trình <xliff:g id="PROCESS">%2$s</xliff:g>) đã vi phạm chính sách StrictMode tự thi hành của mình."</string> <string name="smv_process" msgid="5120397012047462446">"Quá trình <xliff:g id="PROCESS">%1$s</xliff:g> đã vi phạm chính sách StrictMode tự thi hành của mình."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android đang nâng cấp..."</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 93361829118a..865d435450d8 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"缩放"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"始终显示"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"在“系统设置”>“应用”>“已下载”中重新启用此模式。"</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"“<xliff:g id="APPLICATION">%1$s</xliff:g>”应用(<xliff:g id="PROCESS">%2$s</xliff:g> 进程)违反了自我强制执行的严格模式 (StrictMode) 政策。"</string> <string name="smv_process" msgid="5120397012047462446">"进程 <xliff:g id="PROCESS">%1$s</xliff:g> 违反了自我强制执行的严格模式 (StrictMode) 政策。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"Android正在升级..."</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index d7b705bb31c6..6c896b2534ef 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"比例"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"永遠顯示"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"前往 [系統設定] > [應用程式] > [下載] 重新啟用這個模式。"</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援目前的「螢幕」尺寸設定,畫面可能無法如預期顯示。"</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"永遠顯示"</string> <string name="smv_application" msgid="3307209192155442829">"應用程式 <xliff:g id="APPLICATION">%1$s</xliff:g> (處理程序 <xliff:g id="PROCESS">%2$s</xliff:g>) 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="smv_process" msgid="5120397012047462446">"處理程序 <xliff:g id="PROCESS">%1$s</xliff:g> 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android..."</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index cef8b98f0f1e..f3691cd74198 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1015,6 +1015,8 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"比例"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"一律顯示"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"前往 [系統設定] > [應用程式] > [下載] 重新啟用這個模式。"</string> + <string name="unsupported_display_size_message" msgid="6545327290756295232">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援目前的顯示大小設定,可能會發生非預期的行為。"</string> + <string name="unsupported_display_size_show" msgid="7969129195360353041">"一律顯示"</string> <string name="smv_application" msgid="3307209192155442829">"應用程式 <xliff:g id="APPLICATION">%1$s</xliff:g> (處理程序 <xliff:g id="PROCESS">%2$s</xliff:g>) 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="smv_process" msgid="5120397012047462446">"處理程序 <xliff:g id="PROCESS">%1$s</xliff:g> 已違反其自行強制實施的嚴格模式 (StrictMode) 政策。"</string> <string name="android_upgrading_title" msgid="1584192285441405746">"正在升級 Android…"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 7720b5e0c83a..a804f441e9f2 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1015,6 +1015,10 @@ <string name="screen_compat_mode_scale" msgid="3202955667675944499">"Isilinganisi"</string> <string name="screen_compat_mode_show" msgid="4013878876486655892">"Bonisa njalo"</string> <string name="screen_compat_mode_hint" msgid="1064524084543304459">"Yenza kuphinde kusebenze kuzilungiselelo Zesistimue > Izinhlelo zokusebenza > Okulayishiwe."</string> + <!-- no translation found for unsupported_display_size_message (6545327290756295232) --> + <skip /> + <!-- no translation found for unsupported_display_size_show (7969129195360353041) --> + <skip /> <string name="smv_application" msgid="3307209192155442829">"Inqubo <xliff:g id="APPLICATION">%1$s</xliff:g> (yohlelo <xliff:g id="PROCESS">%2$s</xliff:g>) iphule inqubomgomo oziphoqelela yona Yemodi Ebukhali."</string> <string name="smv_process" msgid="5120397012047462446">"Inqubo <xliff:g id="PROCESS">%1$s</xliff:g> yephule inqubomgomo yokuziphoqelela Yemodi Ebukhali."</string> <string name="android_upgrading_title" msgid="1584192285441405746">"I-Android ifaka ezakamuva..."</string> diff --git a/core/tests/notificationtests/src/android/app/NotificationStressTest.java b/core/tests/notificationtests/src/android/app/NotificationStressTest.java index 6e86c37f65f8..f1740148ead6 100644 --- a/core/tests/notificationtests/src/android/app/NotificationStressTest.java +++ b/core/tests/notificationtests/src/android/app/NotificationStressTest.java @@ -40,9 +40,9 @@ public class NotificationStressTest extends InstrumentationTestCase { private static final int NUM_ITERATIONS = 200; private static final int NUM_ITERATIONS_2 = 30; private static final int LONG_TIMEOUT = 2000; - // 50 notifications per app: defined as Variable MAX_PACKAGE_NOTIFICATIONS in + // 49 notifications per app: defined as Variable MAX_PACKAGE_NOTIFICATIONS in // NotificationManagerService.java - private static final int MAX_NOTIFCATIONS = 50; + private static final int MAX_NOTIFCATIONS = 49; private static final int[] ICONS = new int[] { android.R.drawable.stat_notify_call_mute, android.R.drawable.stat_notify_chat, @@ -76,9 +76,10 @@ public class NotificationStressTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { - super.tearDown(); mDevice.unfreezeRotation(); mNotificationManager.cancelAll(); + mDevice.waitForIdle(); + super.tearDown(); } @RepetitiveTest(numIterations = NUM_ITERATIONS) @@ -97,7 +98,7 @@ public class NotificationStressTest extends InstrumentationTestCase { for (int j = 0; j < MAX_NOTIFCATIONS; j++) { sendNotification(mNotifyId++, "testNotificationStressNotify"); } - Thread.sleep(500); + Thread.sleep(LONG_TIMEOUT); assertTrue(mNotificationManager.getActiveNotifications().length == MAX_NOTIFCATIONS); for (int j = 0; j < MAX_NOTIFCATIONS; j++) { mNotificationManager.cancel(--mNotifyId); @@ -124,7 +125,8 @@ public class NotificationStressTest extends InstrumentationTestCase { .setPriority(Notification.PRIORITY_HIGH) .build(); mNotificationManager.notify(id, notification); - SystemClock.sleep(10); + //update rate limit is 50 notifications/second. + SystemClock.sleep(20); } private boolean isLockScreen() { diff --git a/docs/html-intl/intl/es/preview/images/bundles.png b/docs/html-intl/intl/es/preview/images/bundles.png Binary files differdeleted file mode 100644 index 8b022b1c20e7..000000000000 --- a/docs/html-intl/intl/es/preview/images/bundles.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/bundles_2x.png b/docs/html-intl/intl/es/preview/images/bundles_2x.png Binary files differdeleted file mode 100644 index 4669096a1c9b..000000000000 --- a/docs/html-intl/intl/es/preview/images/bundles_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/datasaver.png b/docs/html-intl/intl/es/preview/images/datasaver.png Binary files differdeleted file mode 100644 index c5a58fb1f39b..000000000000 --- a/docs/html-intl/intl/es/preview/images/datasaver.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/doze-diagram-1.png b/docs/html-intl/intl/es/preview/images/doze-diagram-1.png Binary files differdeleted file mode 100644 index 08144479f559..000000000000 --- a/docs/html-intl/intl/es/preview/images/doze-diagram-1.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/doze-diagram-2.png b/docs/html-intl/intl/es/preview/images/doze-diagram-2.png Binary files differdeleted file mode 100644 index c20c6cb2e323..000000000000 --- a/docs/html-intl/intl/es/preview/images/doze-diagram-2.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/inline-reply.png b/docs/html-intl/intl/es/preview/images/inline-reply.png Binary files differdeleted file mode 100644 index 79a1a72bb0ee..000000000000 --- a/docs/html-intl/intl/es/preview/images/inline-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/inline-reply_2x.png b/docs/html-intl/intl/es/preview/images/inline-reply_2x.png Binary files differdeleted file mode 100644 index 13c6e35bf207..000000000000 --- a/docs/html-intl/intl/es/preview/images/inline-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/inline-type-reply.png b/docs/html-intl/intl/es/preview/images/inline-type-reply.png Binary files differdeleted file mode 100644 index b22aacda02d8..000000000000 --- a/docs/html-intl/intl/es/preview/images/inline-type-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/inline-type-reply_2x.png b/docs/html-intl/intl/es/preview/images/inline-type-reply_2x.png Binary files differdeleted file mode 100644 index 6e52a802296e..000000000000 --- a/docs/html-intl/intl/es/preview/images/inline-type-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/es/preview/images/m-preview-timeline-crop.png Binary files differdeleted file mode 100644 index 724a6af8bc51..000000000000 --- a/docs/html-intl/intl/es/preview/images/m-preview-timeline-crop.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/m-preview-timeline.png b/docs/html-intl/intl/es/preview/images/m-preview-timeline.png Binary files differdeleted file mode 100644 index e9a339ef8276..000000000000 --- a/docs/html-intl/intl/es/preview/images/m-preview-timeline.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/mw-portrait.png b/docs/html-intl/intl/es/preview/images/mw-portrait.png Binary files differdeleted file mode 100644 index e752387f11c3..000000000000 --- a/docs/html-intl/intl/es/preview/images/mw-portrait.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/mw-splitscreen.png b/docs/html-intl/intl/es/preview/images/mw-splitscreen.png Binary files differdeleted file mode 100644 index bf719997635d..000000000000 --- a/docs/html-intl/intl/es/preview/images/mw-splitscreen.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/mw-splitscreen_2x.png b/docs/html-intl/intl/es/preview/images/mw-splitscreen_2x.png Binary files differdeleted file mode 100644 index 38114db497aa..000000000000 --- a/docs/html-intl/intl/es/preview/images/mw-splitscreen_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/n-preview-setup.png b/docs/html-intl/intl/es/preview/images/n-preview-setup.png Binary files differdeleted file mode 100644 index 612e0316bc96..000000000000 --- a/docs/html-intl/intl/es/preview/images/n-preview-setup.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/notifications-1.png b/docs/html-intl/intl/es/preview/images/notifications-1.png Binary files differdeleted file mode 100644 index 57120026a97c..000000000000 --- a/docs/html-intl/intl/es/preview/images/notifications-1.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/notifications-2.png b/docs/html-intl/intl/es/preview/images/notifications-2.png Binary files differdeleted file mode 100644 index 0d07948171ea..000000000000 --- a/docs/html-intl/intl/es/preview/images/notifications-2.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/notifications-3.png b/docs/html-intl/intl/es/preview/images/notifications-3.png Binary files differdeleted file mode 100644 index 261d01074f84..000000000000 --- a/docs/html-intl/intl/es/preview/images/notifications-3.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/notifications-card.png b/docs/html-intl/intl/es/preview/images/notifications-card.png Binary files differdeleted file mode 100644 index d9d05900e5d8..000000000000 --- a/docs/html-intl/intl/es/preview/images/notifications-card.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/pip-active.png b/docs/html-intl/intl/es/preview/images/pip-active.png Binary files differdeleted file mode 100644 index a24cb0368b7d..000000000000 --- a/docs/html-intl/intl/es/preview/images/pip-active.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/pip-button.png b/docs/html-intl/intl/es/preview/images/pip-button.png Binary files differdeleted file mode 100644 index b876b12605e1..000000000000 --- a/docs/html-intl/intl/es/preview/images/pip-button.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/quicksettings.png b/docs/html-intl/intl/es/preview/images/quicksettings.png Binary files differdeleted file mode 100644 index 68e1f740a6d2..000000000000 --- a/docs/html-intl/intl/es/preview/images/quicksettings.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/sample-activenotifications.png b/docs/html-intl/intl/es/preview/images/sample-activenotifications.png Binary files differdeleted file mode 100644 index 8817469feb9d..000000000000 --- a/docs/html-intl/intl/es/preview/images/sample-activenotifications.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/sample-directboot.png b/docs/html-intl/intl/es/preview/images/sample-directboot.png Binary files differdeleted file mode 100644 index cc409d381263..000000000000 --- a/docs/html-intl/intl/es/preview/images/sample-directboot.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/sample-messagingservice.png b/docs/html-intl/intl/es/preview/images/sample-messagingservice.png Binary files differdeleted file mode 100644 index 0d8fb3e6e10c..000000000000 --- a/docs/html-intl/intl/es/preview/images/sample-messagingservice.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/sample-multiwindow.png b/docs/html-intl/intl/es/preview/images/sample-multiwindow.png Binary files differdeleted file mode 100644 index 979bf619f5e8..000000000000 --- a/docs/html-intl/intl/es/preview/images/sample-multiwindow.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/sample-scopeddirectoryaccess.png b/docs/html-intl/intl/es/preview/images/sample-scopeddirectoryaccess.png Binary files differdeleted file mode 100644 index 58515dcac0b3..000000000000 --- a/docs/html-intl/intl/es/preview/images/sample-scopeddirectoryaccess.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/scoped-folder-access-dont-ask.png b/docs/html-intl/intl/es/preview/images/scoped-folder-access-dont-ask.png Binary files differdeleted file mode 100644 index 5c505d956f5e..000000000000 --- a/docs/html-intl/intl/es/preview/images/scoped-folder-access-dont-ask.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html-intl/intl/es/preview/images/scoped-folder-access-dont-ask_2x.png Binary files differdeleted file mode 100644 index 612b69f8926f..000000000000 --- a/docs/html-intl/intl/es/preview/images/scoped-folder-access-dont-ask_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/scoped-folder-access-framed.png b/docs/html-intl/intl/es/preview/images/scoped-folder-access-framed.png Binary files differdeleted file mode 100644 index 0169e4196aff..000000000000 --- a/docs/html-intl/intl/es/preview/images/scoped-folder-access-framed.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/scoped-folder-access-framed_2x.png b/docs/html-intl/intl/es/preview/images/scoped-folder-access-framed_2x.png Binary files differdeleted file mode 100644 index fd59ef17d94c..000000000000 --- a/docs/html-intl/intl/es/preview/images/scoped-folder-access-framed_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/screen-zoom-1.png b/docs/html-intl/intl/es/preview/images/screen-zoom-1.png Binary files differdeleted file mode 100644 index f62d04e2a186..000000000000 --- a/docs/html-intl/intl/es/preview/images/screen-zoom-1.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/screen-zoom-2.png b/docs/html-intl/intl/es/preview/images/screen-zoom-2.png Binary files differdeleted file mode 100644 index 172b5b3dc3b2..000000000000 --- a/docs/html-intl/intl/es/preview/images/screen-zoom-2.png +++ /dev/null diff --git a/docs/html-intl/intl/es/preview/images/studio-jdk-location.jpg b/docs/html-intl/intl/es/preview/images/studio-jdk-location.jpg Binary files differdeleted file mode 100644 index 1b1ba2357726..000000000000 --- a/docs/html-intl/intl/es/preview/images/studio-jdk-location.jpg +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/bundles.png b/docs/html-intl/intl/in/preview/images/bundles.png Binary files differdeleted file mode 100644 index 8b022b1c20e7..000000000000 --- a/docs/html-intl/intl/in/preview/images/bundles.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/bundles_2x.png b/docs/html-intl/intl/in/preview/images/bundles_2x.png Binary files differdeleted file mode 100644 index 4669096a1c9b..000000000000 --- a/docs/html-intl/intl/in/preview/images/bundles_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/datasaver.png b/docs/html-intl/intl/in/preview/images/datasaver.png Binary files differdeleted file mode 100644 index c5a58fb1f39b..000000000000 --- a/docs/html-intl/intl/in/preview/images/datasaver.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/doze-diagram-1.png b/docs/html-intl/intl/in/preview/images/doze-diagram-1.png Binary files differdeleted file mode 100644 index 08144479f559..000000000000 --- a/docs/html-intl/intl/in/preview/images/doze-diagram-1.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/doze-diagram-2.png b/docs/html-intl/intl/in/preview/images/doze-diagram-2.png Binary files differdeleted file mode 100644 index c20c6cb2e323..000000000000 --- a/docs/html-intl/intl/in/preview/images/doze-diagram-2.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/inline-reply.png b/docs/html-intl/intl/in/preview/images/inline-reply.png Binary files differdeleted file mode 100644 index 79a1a72bb0ee..000000000000 --- a/docs/html-intl/intl/in/preview/images/inline-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/inline-reply_2x.png b/docs/html-intl/intl/in/preview/images/inline-reply_2x.png Binary files differdeleted file mode 100644 index 13c6e35bf207..000000000000 --- a/docs/html-intl/intl/in/preview/images/inline-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/inline-type-reply.png b/docs/html-intl/intl/in/preview/images/inline-type-reply.png Binary files differdeleted file mode 100644 index b22aacda02d8..000000000000 --- a/docs/html-intl/intl/in/preview/images/inline-type-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/inline-type-reply_2x.png b/docs/html-intl/intl/in/preview/images/inline-type-reply_2x.png Binary files differdeleted file mode 100644 index 6e52a802296e..000000000000 --- a/docs/html-intl/intl/in/preview/images/inline-type-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/in/preview/images/m-preview-timeline-crop.png Binary files differdeleted file mode 100644 index 724a6af8bc51..000000000000 --- a/docs/html-intl/intl/in/preview/images/m-preview-timeline-crop.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/m-preview-timeline.png b/docs/html-intl/intl/in/preview/images/m-preview-timeline.png Binary files differdeleted file mode 100644 index e9a339ef8276..000000000000 --- a/docs/html-intl/intl/in/preview/images/m-preview-timeline.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/mw-portrait.png b/docs/html-intl/intl/in/preview/images/mw-portrait.png Binary files differdeleted file mode 100644 index e752387f11c3..000000000000 --- a/docs/html-intl/intl/in/preview/images/mw-portrait.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/mw-splitscreen.png b/docs/html-intl/intl/in/preview/images/mw-splitscreen.png Binary files differdeleted file mode 100644 index bf719997635d..000000000000 --- a/docs/html-intl/intl/in/preview/images/mw-splitscreen.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/mw-splitscreen_2x.png b/docs/html-intl/intl/in/preview/images/mw-splitscreen_2x.png Binary files differdeleted file mode 100644 index 38114db497aa..000000000000 --- a/docs/html-intl/intl/in/preview/images/mw-splitscreen_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/n-preview-setup.png b/docs/html-intl/intl/in/preview/images/n-preview-setup.png Binary files differdeleted file mode 100644 index 612e0316bc96..000000000000 --- a/docs/html-intl/intl/in/preview/images/n-preview-setup.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/notifications-1.png b/docs/html-intl/intl/in/preview/images/notifications-1.png Binary files differdeleted file mode 100644 index 57120026a97c..000000000000 --- a/docs/html-intl/intl/in/preview/images/notifications-1.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/notifications-2.png b/docs/html-intl/intl/in/preview/images/notifications-2.png Binary files differdeleted file mode 100644 index 0d07948171ea..000000000000 --- a/docs/html-intl/intl/in/preview/images/notifications-2.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/notifications-3.png b/docs/html-intl/intl/in/preview/images/notifications-3.png Binary files differdeleted file mode 100644 index 261d01074f84..000000000000 --- a/docs/html-intl/intl/in/preview/images/notifications-3.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/notifications-card.png b/docs/html-intl/intl/in/preview/images/notifications-card.png Binary files differdeleted file mode 100644 index d9d05900e5d8..000000000000 --- a/docs/html-intl/intl/in/preview/images/notifications-card.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/pip-active.png b/docs/html-intl/intl/in/preview/images/pip-active.png Binary files differdeleted file mode 100644 index a24cb0368b7d..000000000000 --- a/docs/html-intl/intl/in/preview/images/pip-active.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/pip-button.png b/docs/html-intl/intl/in/preview/images/pip-button.png Binary files differdeleted file mode 100644 index b876b12605e1..000000000000 --- a/docs/html-intl/intl/in/preview/images/pip-button.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/quicksettings.png b/docs/html-intl/intl/in/preview/images/quicksettings.png Binary files differdeleted file mode 100644 index 68e1f740a6d2..000000000000 --- a/docs/html-intl/intl/in/preview/images/quicksettings.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/sample-activenotifications.png b/docs/html-intl/intl/in/preview/images/sample-activenotifications.png Binary files differdeleted file mode 100644 index 8817469feb9d..000000000000 --- a/docs/html-intl/intl/in/preview/images/sample-activenotifications.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/sample-directboot.png b/docs/html-intl/intl/in/preview/images/sample-directboot.png Binary files differdeleted file mode 100644 index cc409d381263..000000000000 --- a/docs/html-intl/intl/in/preview/images/sample-directboot.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/sample-messagingservice.png b/docs/html-intl/intl/in/preview/images/sample-messagingservice.png Binary files differdeleted file mode 100644 index 0d8fb3e6e10c..000000000000 --- a/docs/html-intl/intl/in/preview/images/sample-messagingservice.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/sample-multiwindow.png b/docs/html-intl/intl/in/preview/images/sample-multiwindow.png Binary files differdeleted file mode 100644 index 979bf619f5e8..000000000000 --- a/docs/html-intl/intl/in/preview/images/sample-multiwindow.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/sample-scopeddirectoryaccess.png b/docs/html-intl/intl/in/preview/images/sample-scopeddirectoryaccess.png Binary files differdeleted file mode 100644 index 58515dcac0b3..000000000000 --- a/docs/html-intl/intl/in/preview/images/sample-scopeddirectoryaccess.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/scoped-folder-access-dont-ask.png b/docs/html-intl/intl/in/preview/images/scoped-folder-access-dont-ask.png Binary files differdeleted file mode 100644 index 5c505d956f5e..000000000000 --- a/docs/html-intl/intl/in/preview/images/scoped-folder-access-dont-ask.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html-intl/intl/in/preview/images/scoped-folder-access-dont-ask_2x.png Binary files differdeleted file mode 100644 index 612b69f8926f..000000000000 --- a/docs/html-intl/intl/in/preview/images/scoped-folder-access-dont-ask_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/scoped-folder-access-framed.png b/docs/html-intl/intl/in/preview/images/scoped-folder-access-framed.png Binary files differdeleted file mode 100644 index 0169e4196aff..000000000000 --- a/docs/html-intl/intl/in/preview/images/scoped-folder-access-framed.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/scoped-folder-access-framed_2x.png b/docs/html-intl/intl/in/preview/images/scoped-folder-access-framed_2x.png Binary files differdeleted file mode 100644 index fd59ef17d94c..000000000000 --- a/docs/html-intl/intl/in/preview/images/scoped-folder-access-framed_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/screen-zoom-1.png b/docs/html-intl/intl/in/preview/images/screen-zoom-1.png Binary files differdeleted file mode 100644 index f62d04e2a186..000000000000 --- a/docs/html-intl/intl/in/preview/images/screen-zoom-1.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/screen-zoom-2.png b/docs/html-intl/intl/in/preview/images/screen-zoom-2.png Binary files differdeleted file mode 100644 index 172b5b3dc3b2..000000000000 --- a/docs/html-intl/intl/in/preview/images/screen-zoom-2.png +++ /dev/null diff --git a/docs/html-intl/intl/in/preview/images/studio-jdk-location.jpg b/docs/html-intl/intl/in/preview/images/studio-jdk-location.jpg Binary files differdeleted file mode 100644 index 1b1ba2357726..000000000000 --- a/docs/html-intl/intl/in/preview/images/studio-jdk-location.jpg +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/bundles.png b/docs/html-intl/intl/ja/preview/images/bundles.png Binary files differdeleted file mode 100644 index 8b022b1c20e7..000000000000 --- a/docs/html-intl/intl/ja/preview/images/bundles.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/bundles_2x.png b/docs/html-intl/intl/ja/preview/images/bundles_2x.png Binary files differdeleted file mode 100644 index 4669096a1c9b..000000000000 --- a/docs/html-intl/intl/ja/preview/images/bundles_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/datasaver.png b/docs/html-intl/intl/ja/preview/images/datasaver.png Binary files differdeleted file mode 100644 index c5a58fb1f39b..000000000000 --- a/docs/html-intl/intl/ja/preview/images/datasaver.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/doze-diagram-1.png b/docs/html-intl/intl/ja/preview/images/doze-diagram-1.png Binary files differdeleted file mode 100644 index 08144479f559..000000000000 --- a/docs/html-intl/intl/ja/preview/images/doze-diagram-1.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/doze-diagram-2.png b/docs/html-intl/intl/ja/preview/images/doze-diagram-2.png Binary files differdeleted file mode 100644 index c20c6cb2e323..000000000000 --- a/docs/html-intl/intl/ja/preview/images/doze-diagram-2.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/inline-reply.png b/docs/html-intl/intl/ja/preview/images/inline-reply.png Binary files differdeleted file mode 100644 index 79a1a72bb0ee..000000000000 --- a/docs/html-intl/intl/ja/preview/images/inline-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/inline-reply_2x.png b/docs/html-intl/intl/ja/preview/images/inline-reply_2x.png Binary files differdeleted file mode 100644 index 13c6e35bf207..000000000000 --- a/docs/html-intl/intl/ja/preview/images/inline-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/inline-type-reply.png b/docs/html-intl/intl/ja/preview/images/inline-type-reply.png Binary files differdeleted file mode 100644 index b22aacda02d8..000000000000 --- a/docs/html-intl/intl/ja/preview/images/inline-type-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/inline-type-reply_2x.png b/docs/html-intl/intl/ja/preview/images/inline-type-reply_2x.png Binary files differdeleted file mode 100644 index 6e52a802296e..000000000000 --- a/docs/html-intl/intl/ja/preview/images/inline-type-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/ja/preview/images/m-preview-timeline-crop.png Binary files differdeleted file mode 100644 index 724a6af8bc51..000000000000 --- a/docs/html-intl/intl/ja/preview/images/m-preview-timeline-crop.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/m-preview-timeline.png b/docs/html-intl/intl/ja/preview/images/m-preview-timeline.png Binary files differdeleted file mode 100644 index e9a339ef8276..000000000000 --- a/docs/html-intl/intl/ja/preview/images/m-preview-timeline.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/mw-portrait.png b/docs/html-intl/intl/ja/preview/images/mw-portrait.png Binary files differdeleted file mode 100644 index e752387f11c3..000000000000 --- a/docs/html-intl/intl/ja/preview/images/mw-portrait.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/mw-splitscreen.png b/docs/html-intl/intl/ja/preview/images/mw-splitscreen.png Binary files differdeleted file mode 100644 index bf719997635d..000000000000 --- a/docs/html-intl/intl/ja/preview/images/mw-splitscreen.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/mw-splitscreen_2x.png b/docs/html-intl/intl/ja/preview/images/mw-splitscreen_2x.png Binary files differdeleted file mode 100644 index 38114db497aa..000000000000 --- a/docs/html-intl/intl/ja/preview/images/mw-splitscreen_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/n-preview-setup.png b/docs/html-intl/intl/ja/preview/images/n-preview-setup.png Binary files differdeleted file mode 100644 index 612e0316bc96..000000000000 --- a/docs/html-intl/intl/ja/preview/images/n-preview-setup.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/notifications-1.png b/docs/html-intl/intl/ja/preview/images/notifications-1.png Binary files differdeleted file mode 100644 index 57120026a97c..000000000000 --- a/docs/html-intl/intl/ja/preview/images/notifications-1.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/notifications-2.png b/docs/html-intl/intl/ja/preview/images/notifications-2.png Binary files differdeleted file mode 100644 index 0d07948171ea..000000000000 --- a/docs/html-intl/intl/ja/preview/images/notifications-2.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/notifications-3.png b/docs/html-intl/intl/ja/preview/images/notifications-3.png Binary files differdeleted file mode 100644 index 261d01074f84..000000000000 --- a/docs/html-intl/intl/ja/preview/images/notifications-3.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/notifications-card.png b/docs/html-intl/intl/ja/preview/images/notifications-card.png Binary files differdeleted file mode 100644 index d9d05900e5d8..000000000000 --- a/docs/html-intl/intl/ja/preview/images/notifications-card.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/pip-active.png b/docs/html-intl/intl/ja/preview/images/pip-active.png Binary files differdeleted file mode 100644 index a24cb0368b7d..000000000000 --- a/docs/html-intl/intl/ja/preview/images/pip-active.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/pip-button.png b/docs/html-intl/intl/ja/preview/images/pip-button.png Binary files differdeleted file mode 100644 index b876b12605e1..000000000000 --- a/docs/html-intl/intl/ja/preview/images/pip-button.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/quicksettings.png b/docs/html-intl/intl/ja/preview/images/quicksettings.png Binary files differdeleted file mode 100644 index 68e1f740a6d2..000000000000 --- a/docs/html-intl/intl/ja/preview/images/quicksettings.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/sample-activenotifications.png b/docs/html-intl/intl/ja/preview/images/sample-activenotifications.png Binary files differdeleted file mode 100644 index 8817469feb9d..000000000000 --- a/docs/html-intl/intl/ja/preview/images/sample-activenotifications.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/sample-directboot.png b/docs/html-intl/intl/ja/preview/images/sample-directboot.png Binary files differdeleted file mode 100644 index cc409d381263..000000000000 --- a/docs/html-intl/intl/ja/preview/images/sample-directboot.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/sample-messagingservice.png b/docs/html-intl/intl/ja/preview/images/sample-messagingservice.png Binary files differdeleted file mode 100644 index 0d8fb3e6e10c..000000000000 --- a/docs/html-intl/intl/ja/preview/images/sample-messagingservice.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/sample-multiwindow.png b/docs/html-intl/intl/ja/preview/images/sample-multiwindow.png Binary files differdeleted file mode 100644 index 979bf619f5e8..000000000000 --- a/docs/html-intl/intl/ja/preview/images/sample-multiwindow.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/sample-scopeddirectoryaccess.png b/docs/html-intl/intl/ja/preview/images/sample-scopeddirectoryaccess.png Binary files differdeleted file mode 100644 index 58515dcac0b3..000000000000 --- a/docs/html-intl/intl/ja/preview/images/sample-scopeddirectoryaccess.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-dont-ask.png b/docs/html-intl/intl/ja/preview/images/scoped-folder-access-dont-ask.png Binary files differdeleted file mode 100644 index 5c505d956f5e..000000000000 --- a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-dont-ask.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html-intl/intl/ja/preview/images/scoped-folder-access-dont-ask_2x.png Binary files differdeleted file mode 100644 index 612b69f8926f..000000000000 --- a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-dont-ask_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-framed.png b/docs/html-intl/intl/ja/preview/images/scoped-folder-access-framed.png Binary files differdeleted file mode 100644 index 0169e4196aff..000000000000 --- a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-framed.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-framed_2x.png b/docs/html-intl/intl/ja/preview/images/scoped-folder-access-framed_2x.png Binary files differdeleted file mode 100644 index fd59ef17d94c..000000000000 --- a/docs/html-intl/intl/ja/preview/images/scoped-folder-access-framed_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/screen-zoom-1.png b/docs/html-intl/intl/ja/preview/images/screen-zoom-1.png Binary files differdeleted file mode 100644 index f62d04e2a186..000000000000 --- a/docs/html-intl/intl/ja/preview/images/screen-zoom-1.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/screen-zoom-2.png b/docs/html-intl/intl/ja/preview/images/screen-zoom-2.png Binary files differdeleted file mode 100644 index 172b5b3dc3b2..000000000000 --- a/docs/html-intl/intl/ja/preview/images/screen-zoom-2.png +++ /dev/null diff --git a/docs/html-intl/intl/ja/preview/images/studio-jdk-location.jpg b/docs/html-intl/intl/ja/preview/images/studio-jdk-location.jpg Binary files differdeleted file mode 100644 index 1b1ba2357726..000000000000 --- a/docs/html-intl/intl/ja/preview/images/studio-jdk-location.jpg +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/bundles.png b/docs/html-intl/intl/ko/preview/images/bundles.png Binary files differdeleted file mode 100644 index 8b022b1c20e7..000000000000 --- a/docs/html-intl/intl/ko/preview/images/bundles.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/bundles_2x.png b/docs/html-intl/intl/ko/preview/images/bundles_2x.png Binary files differdeleted file mode 100644 index 4669096a1c9b..000000000000 --- a/docs/html-intl/intl/ko/preview/images/bundles_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/datasaver.png b/docs/html-intl/intl/ko/preview/images/datasaver.png Binary files differdeleted file mode 100644 index c5a58fb1f39b..000000000000 --- a/docs/html-intl/intl/ko/preview/images/datasaver.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/doze-diagram-1.png b/docs/html-intl/intl/ko/preview/images/doze-diagram-1.png Binary files differdeleted file mode 100644 index 08144479f559..000000000000 --- a/docs/html-intl/intl/ko/preview/images/doze-diagram-1.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/doze-diagram-2.png b/docs/html-intl/intl/ko/preview/images/doze-diagram-2.png Binary files differdeleted file mode 100644 index c20c6cb2e323..000000000000 --- a/docs/html-intl/intl/ko/preview/images/doze-diagram-2.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/inline-reply.png b/docs/html-intl/intl/ko/preview/images/inline-reply.png Binary files differdeleted file mode 100644 index 79a1a72bb0ee..000000000000 --- a/docs/html-intl/intl/ko/preview/images/inline-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/inline-reply_2x.png b/docs/html-intl/intl/ko/preview/images/inline-reply_2x.png Binary files differdeleted file mode 100644 index 13c6e35bf207..000000000000 --- a/docs/html-intl/intl/ko/preview/images/inline-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/inline-type-reply.png b/docs/html-intl/intl/ko/preview/images/inline-type-reply.png Binary files differdeleted file mode 100644 index b22aacda02d8..000000000000 --- a/docs/html-intl/intl/ko/preview/images/inline-type-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/inline-type-reply_2x.png b/docs/html-intl/intl/ko/preview/images/inline-type-reply_2x.png Binary files differdeleted file mode 100644 index 6e52a802296e..000000000000 --- a/docs/html-intl/intl/ko/preview/images/inline-type-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/ko/preview/images/m-preview-timeline-crop.png Binary files differdeleted file mode 100644 index 724a6af8bc51..000000000000 --- a/docs/html-intl/intl/ko/preview/images/m-preview-timeline-crop.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/m-preview-timeline.png b/docs/html-intl/intl/ko/preview/images/m-preview-timeline.png Binary files differdeleted file mode 100644 index e9a339ef8276..000000000000 --- a/docs/html-intl/intl/ko/preview/images/m-preview-timeline.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/mw-portrait.png b/docs/html-intl/intl/ko/preview/images/mw-portrait.png Binary files differdeleted file mode 100644 index e752387f11c3..000000000000 --- a/docs/html-intl/intl/ko/preview/images/mw-portrait.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/mw-splitscreen.png b/docs/html-intl/intl/ko/preview/images/mw-splitscreen.png Binary files differdeleted file mode 100644 index bf719997635d..000000000000 --- a/docs/html-intl/intl/ko/preview/images/mw-splitscreen.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/mw-splitscreen_2x.png b/docs/html-intl/intl/ko/preview/images/mw-splitscreen_2x.png Binary files differdeleted file mode 100644 index 38114db497aa..000000000000 --- a/docs/html-intl/intl/ko/preview/images/mw-splitscreen_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/n-preview-setup.png b/docs/html-intl/intl/ko/preview/images/n-preview-setup.png Binary files differdeleted file mode 100644 index 612e0316bc96..000000000000 --- a/docs/html-intl/intl/ko/preview/images/n-preview-setup.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/notifications-1.png b/docs/html-intl/intl/ko/preview/images/notifications-1.png Binary files differdeleted file mode 100644 index 57120026a97c..000000000000 --- a/docs/html-intl/intl/ko/preview/images/notifications-1.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/notifications-2.png b/docs/html-intl/intl/ko/preview/images/notifications-2.png Binary files differdeleted file mode 100644 index 0d07948171ea..000000000000 --- a/docs/html-intl/intl/ko/preview/images/notifications-2.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/notifications-3.png b/docs/html-intl/intl/ko/preview/images/notifications-3.png Binary files differdeleted file mode 100644 index 261d01074f84..000000000000 --- a/docs/html-intl/intl/ko/preview/images/notifications-3.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/notifications-card.png b/docs/html-intl/intl/ko/preview/images/notifications-card.png Binary files differdeleted file mode 100644 index d9d05900e5d8..000000000000 --- a/docs/html-intl/intl/ko/preview/images/notifications-card.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/pip-active.png b/docs/html-intl/intl/ko/preview/images/pip-active.png Binary files differdeleted file mode 100644 index a24cb0368b7d..000000000000 --- a/docs/html-intl/intl/ko/preview/images/pip-active.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/pip-button.png b/docs/html-intl/intl/ko/preview/images/pip-button.png Binary files differdeleted file mode 100644 index b876b12605e1..000000000000 --- a/docs/html-intl/intl/ko/preview/images/pip-button.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/quicksettings.png b/docs/html-intl/intl/ko/preview/images/quicksettings.png Binary files differdeleted file mode 100644 index 68e1f740a6d2..000000000000 --- a/docs/html-intl/intl/ko/preview/images/quicksettings.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/sample-activenotifications.png b/docs/html-intl/intl/ko/preview/images/sample-activenotifications.png Binary files differdeleted file mode 100644 index 8817469feb9d..000000000000 --- a/docs/html-intl/intl/ko/preview/images/sample-activenotifications.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/sample-directboot.png b/docs/html-intl/intl/ko/preview/images/sample-directboot.png Binary files differdeleted file mode 100644 index cc409d381263..000000000000 --- a/docs/html-intl/intl/ko/preview/images/sample-directboot.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/sample-messagingservice.png b/docs/html-intl/intl/ko/preview/images/sample-messagingservice.png Binary files differdeleted file mode 100644 index 0d8fb3e6e10c..000000000000 --- a/docs/html-intl/intl/ko/preview/images/sample-messagingservice.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/sample-multiwindow.png b/docs/html-intl/intl/ko/preview/images/sample-multiwindow.png Binary files differdeleted file mode 100644 index 979bf619f5e8..000000000000 --- a/docs/html-intl/intl/ko/preview/images/sample-multiwindow.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/sample-scopeddirectoryaccess.png b/docs/html-intl/intl/ko/preview/images/sample-scopeddirectoryaccess.png Binary files differdeleted file mode 100644 index 58515dcac0b3..000000000000 --- a/docs/html-intl/intl/ko/preview/images/sample-scopeddirectoryaccess.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-dont-ask.png b/docs/html-intl/intl/ko/preview/images/scoped-folder-access-dont-ask.png Binary files differdeleted file mode 100644 index 5c505d956f5e..000000000000 --- a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-dont-ask.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html-intl/intl/ko/preview/images/scoped-folder-access-dont-ask_2x.png Binary files differdeleted file mode 100644 index 612b69f8926f..000000000000 --- a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-dont-ask_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-framed.png b/docs/html-intl/intl/ko/preview/images/scoped-folder-access-framed.png Binary files differdeleted file mode 100644 index 0169e4196aff..000000000000 --- a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-framed.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-framed_2x.png b/docs/html-intl/intl/ko/preview/images/scoped-folder-access-framed_2x.png Binary files differdeleted file mode 100644 index fd59ef17d94c..000000000000 --- a/docs/html-intl/intl/ko/preview/images/scoped-folder-access-framed_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/screen-zoom-1.png b/docs/html-intl/intl/ko/preview/images/screen-zoom-1.png Binary files differdeleted file mode 100644 index f62d04e2a186..000000000000 --- a/docs/html-intl/intl/ko/preview/images/screen-zoom-1.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/screen-zoom-2.png b/docs/html-intl/intl/ko/preview/images/screen-zoom-2.png Binary files differdeleted file mode 100644 index 172b5b3dc3b2..000000000000 --- a/docs/html-intl/intl/ko/preview/images/screen-zoom-2.png +++ /dev/null diff --git a/docs/html-intl/intl/ko/preview/images/studio-jdk-location.jpg b/docs/html-intl/intl/ko/preview/images/studio-jdk-location.jpg Binary files differdeleted file mode 100644 index 1b1ba2357726..000000000000 --- a/docs/html-intl/intl/ko/preview/images/studio-jdk-location.jpg +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/bundles.png b/docs/html-intl/intl/pt-br/preview/images/bundles.png Binary files differdeleted file mode 100644 index 8b022b1c20e7..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/bundles.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/bundles_2x.png b/docs/html-intl/intl/pt-br/preview/images/bundles_2x.png Binary files differdeleted file mode 100644 index 4669096a1c9b..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/bundles_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/datasaver.png b/docs/html-intl/intl/pt-br/preview/images/datasaver.png Binary files differdeleted file mode 100644 index c5a58fb1f39b..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/datasaver.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/doze-diagram-1.png b/docs/html-intl/intl/pt-br/preview/images/doze-diagram-1.png Binary files differdeleted file mode 100644 index 08144479f559..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/doze-diagram-1.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/doze-diagram-2.png b/docs/html-intl/intl/pt-br/preview/images/doze-diagram-2.png Binary files differdeleted file mode 100644 index c20c6cb2e323..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/doze-diagram-2.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/inline-reply.png b/docs/html-intl/intl/pt-br/preview/images/inline-reply.png Binary files differdeleted file mode 100644 index 79a1a72bb0ee..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/inline-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/inline-reply_2x.png b/docs/html-intl/intl/pt-br/preview/images/inline-reply_2x.png Binary files differdeleted file mode 100644 index 13c6e35bf207..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/inline-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/inline-type-reply.png b/docs/html-intl/intl/pt-br/preview/images/inline-type-reply.png Binary files differdeleted file mode 100644 index b22aacda02d8..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/inline-type-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/inline-type-reply_2x.png b/docs/html-intl/intl/pt-br/preview/images/inline-type-reply_2x.png Binary files differdeleted file mode 100644 index 6e52a802296e..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/inline-type-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png Binary files differdeleted file mode 100644 index 724a6af8bc51..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png Binary files differdeleted file mode 100644 index e9a339ef8276..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/mw-portrait.png b/docs/html-intl/intl/pt-br/preview/images/mw-portrait.png Binary files differdeleted file mode 100644 index e752387f11c3..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/mw-portrait.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/mw-splitscreen.png b/docs/html-intl/intl/pt-br/preview/images/mw-splitscreen.png Binary files differdeleted file mode 100644 index bf719997635d..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/mw-splitscreen.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/mw-splitscreen_2x.png b/docs/html-intl/intl/pt-br/preview/images/mw-splitscreen_2x.png Binary files differdeleted file mode 100644 index 38114db497aa..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/mw-splitscreen_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/n-preview-setup.png b/docs/html-intl/intl/pt-br/preview/images/n-preview-setup.png Binary files differdeleted file mode 100644 index 612e0316bc96..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/n-preview-setup.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/notifications-1.png b/docs/html-intl/intl/pt-br/preview/images/notifications-1.png Binary files differdeleted file mode 100644 index 57120026a97c..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/notifications-1.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/notifications-2.png b/docs/html-intl/intl/pt-br/preview/images/notifications-2.png Binary files differdeleted file mode 100644 index 0d07948171ea..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/notifications-2.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/notifications-3.png b/docs/html-intl/intl/pt-br/preview/images/notifications-3.png Binary files differdeleted file mode 100644 index 261d01074f84..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/notifications-3.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/notifications-card.png b/docs/html-intl/intl/pt-br/preview/images/notifications-card.png Binary files differdeleted file mode 100644 index d9d05900e5d8..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/notifications-card.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/pip-active.png b/docs/html-intl/intl/pt-br/preview/images/pip-active.png Binary files differdeleted file mode 100644 index a24cb0368b7d..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/pip-active.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/pip-button.png b/docs/html-intl/intl/pt-br/preview/images/pip-button.png Binary files differdeleted file mode 100644 index b876b12605e1..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/pip-button.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/quicksettings.png b/docs/html-intl/intl/pt-br/preview/images/quicksettings.png Binary files differdeleted file mode 100644 index 68e1f740a6d2..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/quicksettings.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/sample-activenotifications.png b/docs/html-intl/intl/pt-br/preview/images/sample-activenotifications.png Binary files differdeleted file mode 100644 index 8817469feb9d..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/sample-activenotifications.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/sample-directboot.png b/docs/html-intl/intl/pt-br/preview/images/sample-directboot.png Binary files differdeleted file mode 100644 index cc409d381263..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/sample-directboot.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/sample-messagingservice.png b/docs/html-intl/intl/pt-br/preview/images/sample-messagingservice.png Binary files differdeleted file mode 100644 index 0d8fb3e6e10c..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/sample-messagingservice.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/sample-multiwindow.png b/docs/html-intl/intl/pt-br/preview/images/sample-multiwindow.png Binary files differdeleted file mode 100644 index 979bf619f5e8..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/sample-multiwindow.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/sample-scopeddirectoryaccess.png b/docs/html-intl/intl/pt-br/preview/images/sample-scopeddirectoryaccess.png Binary files differdeleted file mode 100644 index 58515dcac0b3..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/sample-scopeddirectoryaccess.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-dont-ask.png b/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-dont-ask.png Binary files differdeleted file mode 100644 index 5c505d956f5e..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-dont-ask.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-dont-ask_2x.png Binary files differdeleted file mode 100644 index 612b69f8926f..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-dont-ask_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-framed.png b/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-framed.png Binary files differdeleted file mode 100644 index 0169e4196aff..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-framed.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-framed_2x.png b/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-framed_2x.png Binary files differdeleted file mode 100644 index fd59ef17d94c..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/scoped-folder-access-framed_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/screen-zoom-1.png b/docs/html-intl/intl/pt-br/preview/images/screen-zoom-1.png Binary files differdeleted file mode 100644 index f62d04e2a186..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/screen-zoom-1.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/screen-zoom-2.png b/docs/html-intl/intl/pt-br/preview/images/screen-zoom-2.png Binary files differdeleted file mode 100644 index 172b5b3dc3b2..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/screen-zoom-2.png +++ /dev/null diff --git a/docs/html-intl/intl/pt-br/preview/images/studio-jdk-location.jpg b/docs/html-intl/intl/pt-br/preview/images/studio-jdk-location.jpg Binary files differdeleted file mode 100644 index 1b1ba2357726..000000000000 --- a/docs/html-intl/intl/pt-br/preview/images/studio-jdk-location.jpg +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/bundles.png b/docs/html-intl/intl/zh-cn/preview/images/bundles.png Binary files differdeleted file mode 100644 index 8b022b1c20e7..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/bundles.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/bundles_2x.png b/docs/html-intl/intl/zh-cn/preview/images/bundles_2x.png Binary files differdeleted file mode 100644 index 4669096a1c9b..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/bundles_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/datasaver.png b/docs/html-intl/intl/zh-cn/preview/images/datasaver.png Binary files differdeleted file mode 100644 index c5a58fb1f39b..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/datasaver.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/doze-diagram-1.png b/docs/html-intl/intl/zh-cn/preview/images/doze-diagram-1.png Binary files differdeleted file mode 100644 index 08144479f559..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/doze-diagram-1.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/doze-diagram-2.png b/docs/html-intl/intl/zh-cn/preview/images/doze-diagram-2.png Binary files differdeleted file mode 100644 index c20c6cb2e323..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/doze-diagram-2.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/inline-reply.png b/docs/html-intl/intl/zh-cn/preview/images/inline-reply.png Binary files differdeleted file mode 100644 index 79a1a72bb0ee..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/inline-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/inline-reply_2x.png b/docs/html-intl/intl/zh-cn/preview/images/inline-reply_2x.png Binary files differdeleted file mode 100644 index 13c6e35bf207..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/inline-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/inline-type-reply.png b/docs/html-intl/intl/zh-cn/preview/images/inline-type-reply.png Binary files differdeleted file mode 100644 index b22aacda02d8..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/inline-type-reply.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/inline-type-reply_2x.png b/docs/html-intl/intl/zh-cn/preview/images/inline-type-reply_2x.png Binary files differdeleted file mode 100644 index 6e52a802296e..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/inline-type-reply_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/zh-cn/preview/images/m-preview-timeline-crop.png Binary files differdeleted file mode 100644 index 724a6af8bc51..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/m-preview-timeline-crop.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/m-preview-timeline.png b/docs/html-intl/intl/zh-cn/preview/images/m-preview-timeline.png Binary files differdeleted file mode 100644 index e9a339ef8276..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/m-preview-timeline.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/mw-portrait.png b/docs/html-intl/intl/zh-cn/preview/images/mw-portrait.png Binary files differdeleted file mode 100644 index e752387f11c3..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/mw-portrait.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/mw-splitscreen.png b/docs/html-intl/intl/zh-cn/preview/images/mw-splitscreen.png Binary files differdeleted file mode 100644 index bf719997635d..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/mw-splitscreen.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/mw-splitscreen_2x.png b/docs/html-intl/intl/zh-cn/preview/images/mw-splitscreen_2x.png Binary files differdeleted file mode 100644 index 38114db497aa..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/mw-splitscreen_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/n-preview-setup.png b/docs/html-intl/intl/zh-cn/preview/images/n-preview-setup.png Binary files differdeleted file mode 100644 index 612e0316bc96..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/n-preview-setup.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/notifications-1.png b/docs/html-intl/intl/zh-cn/preview/images/notifications-1.png Binary files differdeleted file mode 100644 index 57120026a97c..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/notifications-1.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/notifications-2.png b/docs/html-intl/intl/zh-cn/preview/images/notifications-2.png Binary files differdeleted file mode 100644 index 0d07948171ea..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/notifications-2.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/notifications-3.png b/docs/html-intl/intl/zh-cn/preview/images/notifications-3.png Binary files differdeleted file mode 100644 index 261d01074f84..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/notifications-3.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/notifications-card.png b/docs/html-intl/intl/zh-cn/preview/images/notifications-card.png Binary files differdeleted file mode 100644 index d9d05900e5d8..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/notifications-card.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/pip-active.png b/docs/html-intl/intl/zh-cn/preview/images/pip-active.png Binary files differdeleted file mode 100644 index a24cb0368b7d..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/pip-active.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/pip-button.png b/docs/html-intl/intl/zh-cn/preview/images/pip-button.png Binary files differdeleted file mode 100644 index b876b12605e1..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/pip-button.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/quicksettings.png b/docs/html-intl/intl/zh-cn/preview/images/quicksettings.png Binary files differdeleted file mode 100644 index 68e1f740a6d2..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/quicksettings.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/sample-activenotifications.png b/docs/html-intl/intl/zh-cn/preview/images/sample-activenotifications.png Binary files differdeleted file mode 100644 index 8817469feb9d..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/sample-activenotifications.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/sample-directboot.png b/docs/html-intl/intl/zh-cn/preview/images/sample-directboot.png Binary files differdeleted file mode 100644 index cc409d381263..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/sample-directboot.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/sample-messagingservice.png b/docs/html-intl/intl/zh-cn/preview/images/sample-messagingservice.png Binary files differdeleted file mode 100644 index 0d8fb3e6e10c..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/sample-messagingservice.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/sample-multiwindow.png b/docs/html-intl/intl/zh-cn/preview/images/sample-multiwindow.png Binary files differdeleted file mode 100644 index 979bf619f5e8..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/sample-multiwindow.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/sample-scopeddirectoryaccess.png b/docs/html-intl/intl/zh-cn/preview/images/sample-scopeddirectoryaccess.png Binary files differdeleted file mode 100644 index 58515dcac0b3..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/sample-scopeddirectoryaccess.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-dont-ask.png b/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-dont-ask.png Binary files differdeleted file mode 100644 index 5c505d956f5e..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-dont-ask.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-dont-ask_2x.png Binary files differdeleted file mode 100644 index 612b69f8926f..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-dont-ask_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-framed.png b/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-framed.png Binary files differdeleted file mode 100644 index 0169e4196aff..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-framed.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-framed_2x.png b/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-framed_2x.png Binary files differdeleted file mode 100644 index fd59ef17d94c..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/scoped-folder-access-framed_2x.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/screen-zoom-1.png b/docs/html-intl/intl/zh-cn/preview/images/screen-zoom-1.png Binary files differdeleted file mode 100644 index f62d04e2a186..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/screen-zoom-1.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/screen-zoom-2.png b/docs/html-intl/intl/zh-cn/preview/images/screen-zoom-2.png Binary files differdeleted file mode 100644 index 172b5b3dc3b2..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/screen-zoom-2.png +++ /dev/null diff --git a/docs/html-intl/intl/zh-cn/preview/images/studio-jdk-location.jpg b/docs/html-intl/intl/zh-cn/preview/images/studio-jdk-location.jpg Binary files differdeleted file mode 100644 index 1b1ba2357726..000000000000 --- a/docs/html-intl/intl/zh-cn/preview/images/studio-jdk-location.jpg +++ /dev/null diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml index 0d656026825c..6e1cc23193d8 100644 --- a/docs/html/_redirects.yaml +++ b/docs/html/_redirects.yaml @@ -1018,6 +1018,8 @@ redirects: to: /studio/projects/templates.html - from: /tools/publishing/app-signing.html to: /studio/publish/app-signing.html +- from: /guide/publishing/app-signing.html + to: /studio/publish/app-signing.html - from: /tools/publishing/preparing.html to: /studio/publish/preparing.html - from: /tools/publishing/publishing_overview.html @@ -1172,4 +1174,6 @@ redirects: - from: /r/studio-ui/export-licenses.html to: http://tools.android.com/tech-docs/new-build-system/license - from: /r/studio-ui/experimental-to-stable-gradle.html - to: http://tools.android.com/tech-docs/new-build-system/gradle-experimental/experimental-to-stable-gradle
\ No newline at end of file + to: http://tools.android.com/tech-docs/new-build-system/gradle-experimental/experimental-to-stable-gradle +- from: /r/studio-ui/sdk-manager.html + to: https://developer.android.com/studio/intro/update.html#sdk-manager
\ No newline at end of file diff --git a/docs/html/google/play/billing/billing_admin.jd b/docs/html/google/play/billing/billing_admin.jd index a1135bfbb919..05f3ad593b9d 100644 --- a/docs/html/google/play/billing/billing_admin.jd +++ b/docs/html/google/play/billing/billing_admin.jd @@ -747,6 +747,15 @@ you at the conclusion of the purchase flow, as the value of the <code>orderId</code> field of the <code>PURCHASE_STATE_CHANGED</code> intent.</p> +<p class="note"> + <strong>Note:</strong> When a user completes a test purchase, the + <code>orderId</code> field remains blank. To track test transactions, use + the <code>purchaseToken</code> field instead. For more information about + working with test purchases, see <a + href="{@docRoot}google/play/billing/billing_testing.html">Testing In-app + Billing</a>. +</p> + <p>In your app, you can use the order number as a general-purpose identifier for the in-app purchase transaction. After the purchase, you can use the order number as a means of tracking the transaction in reconciliation reports and for diff --git a/docs/html/google/play/billing/billing_testing.jd b/docs/html/google/play/billing/billing_testing.jd index 018276defb84..755f3ffd6220 100644 --- a/docs/html/google/play/billing/billing_testing.jd +++ b/docs/html/google/play/billing/billing_testing.jd @@ -79,14 +79,11 @@ launch. They let authorized user accounts make purchases of your in-app products through Google Play without incurring any actual charges to the user accounts.</p> -<p>Once authorized for testing access, those users can make purchases without -being charged. -Test purchases are real orders and Google Play processes them in the same way as -other orders. However, the <code>orderId</code> field for test purchases is -blank. -When purchases are complete, Google Play prevents the orders from -going to financial processing, ensuring that there are no actual charges to user -accounts, and automatically canceling the completed orders after 14 days.</p> +<p> + Once authorized for testing access, those users can make purchases without + being charged. The <code>orderId</code> field for test purchases remains + blank, ensuring that there are no actual charges to user accounts. +</p> <p class="note"> <strong>Note:</strong> Test subscription purchases recur daily, regardless of @@ -130,8 +127,8 @@ account. Users can confirm the account that is making a purchase by expanding th purchase dialog.</p> <p class="note"> - <strong>Note:</strong> For test subscription purchases, leave the {@code orderId} - field blank. You can use the {@code purchaseToken} field to identify test purchases. + <strong>Note:</strong> For test purchases, leave the {@code orderId} field + blank. You can use the {@code purchaseToken} field to identify test purchases. </p> @@ -150,33 +147,22 @@ with a notice across the center of the purchase dialog, for easy identification. <h4 id="cancelling">Canceling completed test purchases</h4> <p>Google Play accumulates completed test purchases for each user but does not -pass them on to financial processing. Over time, it automatically clears out -the purchases by canceling them. </p> +pass them on to financial processing.</p> <p>In some cases, you might want to manually cancel a test purchase to continue -testing. For canceling purchases, you have these options:</p> - -<ul> -<li>Wait for the transactions to expire—Google Play clears completed test -purchases 14 days after their purchase date. </li> -<li>Cancel purchases manually—you can go to the Google payments merchant -center, look up the transaction, and then cancel it. You can find transactions -by looking up their order numbers.</li> +testing. To do so, open the app page in the Play Store. If the test purchase +that you want to cancel is a subscription, you can also use the +<a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/cancel"> +{@code cancel()}</a> method of the Purchases.subscriptions API. </ul> -<p> - You can cancel test subscriptions purchases from the app page in the Play Store, - or use the - <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/cancel"> - {@code cancel}</a> method. -</p> - <p class="caution"> <strong>Important:</strong> The <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/refund"> - {@code refund}</a> and + {@code refund()}</a> and <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/revoke"> - {@code revoke}</a> methods do not support test purchases. + {@code revoke()}</a> methods of the Purchases.subscriptions API don't support + test purchases. </p> diff --git a/docs/html/images/testing/test-types.zip b/docs/html/images/testing/test-types.zip Binary files differnew file mode 100644 index 000000000000..d433b915ff15 --- /dev/null +++ b/docs/html/images/testing/test-types.zip diff --git a/docs/html/images/testing/test-types_2x.png b/docs/html/images/testing/test-types_2x.png Binary files differnew file mode 100644 index 000000000000..0a374aaf6538 --- /dev/null +++ b/docs/html/images/testing/test-types_2x.png diff --git a/docs/html/training/auto/audio/index.jd b/docs/html/training/auto/audio/index.jd index aa20e3a29f9b..3a1b1e883494 100644 --- a/docs/html/training/auto/audio/index.jd +++ b/docs/html/training/auto/audio/index.jd @@ -21,6 +21,7 @@ page.image=auto/images/assets/icons/media_app_playback.png <li><a href="#config_manifest">Configure Your Manifest</a></li> <li><a href="#isconnected">Determine if Your App is Connected</a></li> <li><a href="#alarm">Handle Alarms</a></li> + <li><a href="#mediaadv">Handle Media Advertisements</a></li> <li><a href="#implement_browser">Build a Browser Service</a></li> <li><a href="#implement_callback">Implement Play Controls</a></li> <li><a href="#support_voice">Support Voice Actions</a></li> @@ -261,7 +262,7 @@ following things: <ul> <li>Disable the alarm.</li> <li>Play the alarm over -<a href="{@docRoot}reference/android/media/AudioManager.html">STREAM_ALARM</a>, +<a href="{@docRoot}reference/android/media/AudioManager.html#STREAM_ALARM">STREAM_ALARM</a>, and provide a UI on the phone screen to disable the alarm.</li> </ul> @@ -279,6 +280,33 @@ The following code snippet checks whether an app is running in car mode: } </pre> +<h2 id="mediaadv">Handle Media Advertisements</h2> +<p>By default, Android Auto displays a notification when +the media metadata changes during an audio playback session. When a media +app switches from playing music to running an advertisement, it is distracting +(and unnecessary) to display a notification to the user. To prevent Android Auto +from displaying a notification in this case, you must set the media metadata +key {@code android.media.metadata.ADVERTISEMENT} to 1, as shown in the code +snippet below: + +<pre> + +@Override +public static final String EXTRA_METADATA_ADVERTISEMENT = + "android.media.metadata.ADVERTISEMENT"; + +public void onPlayFromMediaId(String mediaId, Bundle extras) { + MediaMetadata.Builder builder = new MediaMetadata.Builder(); + // ... + if (isAd(mediaId)) { + builder.putLong(EXTRA_METADATA_ADVERTISEMENT, 1); + } + // ... + mediaSession.setMetadata(builder.build()); +} + +</pre> + <h2 id="implement_browser">Build a Browser Service</h2> <p>Auto devices interact with your app by contacting its implementation of a diff --git a/docs/html/training/testing/start/index.jd b/docs/html/training/testing/start/index.jd index 707ba9d8f65a..aa0473f6d09f 100644 --- a/docs/html/training/testing/start/index.jd +++ b/docs/html/training/testing/start/index.jd @@ -9,51 +9,20 @@ page.image=images/tools/studio-main-screen.png <div id="tb"> <h2> - Dependencies and prerequisites - </h2> - - <ul> - <li> - <a href="{@docRoot}tools/studio/index.html">Android Studio 2.0</a>, or - later. - </li> - - <li>The Android Support Repository (available from the <a href= - "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>) - </li> - </ul> - - <h2> - This lesson teaches you to + In this document </h2> <ol> - <li> - <a href="#config-local-tests">Configure Your Project for Local Unit - Tests</a> - </li> - - <li> - <a href="#config-instrumented-tests">Configure Your Project for - Instrumented Tests</a> - </li> - - <li> - <a href="#build">Build and Run Your Tests</a> + <li><a href="#test-types">Test Types</a></li> + <li><a href="#test-apis">Test APIs</a> <ol> - <li> - <a href="#run-local-tests">Run Local Unit Tests</a> - </li> - - <li> - <a href="#run-instrumented-tests">Run Instrumented Tests</a> - </li> - - <li> - <a href="#run-ctl">Run Instrumented Tests with Cloud Test Lab</a> - </li> + <li><a href="#junit">JUnit</a></li> + <li><a href="#support-library">Android Testing Support Library</a></li> + <li><a href="#assertion">Assertion classes</a></li> + <li><a href="#monkeyrunner">Monkey and monkeyrunner</a></li> </ol> </li> + <li><a href="#build">Guides for Building Android Tests</a> </ol> <h2> @@ -61,10 +30,6 @@ page.image=images/tools/studio-main-screen.png </h2> <ul> - <li> - <a href="{@docRoot}tools/testing/testing_android.html">Testing - Concepts</a> - </li> <li> <a href="https://github.com/googlesamples/android-testing" class= @@ -80,484 +45,356 @@ page.image=images/tools/studio-main-screen.png </div> <p> - Writing and running tests are important parts of the Android app development - cycle. Well-written tests can help you catch bugs early in development and - give you confidence in your code. Using Android Studio, you can run local - unit tests or instrumented tests on a variety of physical or virtual Android - devices. You can then analyze the results and make changes to your code - without leaving the development environment. + Android tests are based on <a href="http://junit.org/" class= + "external-link">JUnit</a>, and you can run them either as local + unit tests on the JVM or as instrumented tests on an Android device. + This page provides an introduction to the concepts and + tools for building Android tests. </p> -<p> - <em>Local unit tests</em> are tests that run on your local machine, without - needing access to the Android framework or an Android device. To learn how to - develop local units tests, see <a href= - "{@docRoot}training/testing/unit-testing/local-unit-tests.html">Building - Local Unit Tests</a>. -</p> -<p> - <em>Instrumented tests</em> are tests that run on an Android device or - emulator. These tests have access to {@link android.app.Instrumentation} - information, such as the {@link android.content.Context} for the app under - test. Instrumented tests can be used for unit, user interface (UI), or app - component integration testing. To learn how to develop instrumented tests for - your specific needs, see these additional topics: -</p> +<h2 id="test-types">Test Types</h2> + + +<p>When using Android Studio to write any of your tests, your test code must go +into one of two different code directories (source sets). For each module in +your project, Android Studio includes both source sets, corresponding to the +following test types:</p> + +<dl> +<dt><b>Local unit tests</b></dt> +<dd>Located at <code><var>module-name</var>/src/test/java/</code>. +<p>These tests run on the local JVM +and do not have access to functional Android framework APIs.</p> +<p>To get started, see <a +href="/training/testing/unit-testing/local-unit-tests.html">Building Local +Unit Tests</a>.</p> +</dd> + +<dt><b>Instrumented tests</b></dt> +<dd>Located at <code><var>module-name</var>/src/androidTest/java/</code>. +<p>These are all tests that must run on an Android hardware device or +an Android emulator.</p> + +<p>Instrumented tests are built into an APK that runs on the device alongside +your app under test. The system runs your test APK and your app under tests in +the same process, so your tests can invoke methods and modify fields in the +app, and automate user interaction with your app.</p> + +<p>For information about how to create instrumented tests, see the +following topics:</p> <ul> <li> <a href= - "{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html">Building - Instrumented Unit Tests</a> - Build more complex unit tests that have - Android dependencies which cannot be easily filled by using mock objects. + "{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html" + >Building Instrumented Unit Tests</a>: Build complex unit tests with + Android dependencies that cannot be satisfied with mock objects. </li> <li> <a href="{@docRoot}training/testing/ui-testing/index.html">Automating User - Interface Tests</a> - Create tests to verify that the user interface + Interface Tests</a>: Create tests to verify that the user interface behaves correctly for user interactions within a single app or for interactions across multiple apps. </li> <li> <a href="{@docRoot}training/testing/integration-testing/index.html">Testing - App Component Integrations</a> - Verify the behavior of components that + App Component Integrations</a>: Verify the behavior of components that users do not directly interact with, such as a <a href= "{@docRoot}guide/components/services.html">Service</a> or a <a href= - "guide/topics/providers/content-providers.html">Content Provider</a>. + "{@docRoot}guide/topics/providers/content-providers.html">Content Provider</a>. </li> </ul> -<p> - This lesson teaches you how to build and run your tests using using Android - Studio. If you are not using Android Studio, you can learn how to - <a href="{@docRoot}tools/testing/testing_otheride.html">run your tests from - the command-line</a>. -</p> - -<h3 id="config-local-tests"> - Configure Your Project for Local Unit Tests -</h3> +</dd> +</dl> -<p> - In your Android Studio project, you must store the source files for local - unit tests under a specific source directory ({@code src/test/java}). This - improves project organization by grouping your unit tests together into a - single source set. -</p> +<img src="/images/testing/test-types_2x.png" alt="" width="798" /> -<p> - As with production code, you can create local unit tests for a <a href= - "{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">specific - flavor or build type</a>. Keep your unit tests in a test source tree location - that corresponds to your production source tree, such as: -</p> +<p>However, the <em>local unit tests</em> and <em>instrumented tests</em> +described above are just terms that help distinguish the tests that run on your +local JVM from the tests that run on the Android platform (on a hardware device +or emulator). The real testing types that you should understand when building a +complete test suite are described in the following table.</p> <table> -<tr> -<th>Path to Production Class</th> -<th>Path to Local Unit Test Class</th> -</tr> -<tr> -<td>{@code src/main/java/Foo.java}</td> -<td>{@code src/test/java/FooTest.java}</td> -</tr> -<tr> -<td>{@code src/debug/java/Foo.java}</td> -<td>{@code src/testDebug/java/FooTest.java}</td> -</tr> -<tr> -<td>{@code src/myFlavor/java/Foo.java}</td> -<td>{@code src/testMyFlavor/java/FooTest.java}</td> -</tr> + <tr> + <th> + Type + </th> + <th> + Subtype + </th> + <th> + Description + </th> + </tr> + + <tr> + <td rowspan="3"> + Unit tests + </td> + </tr> + + <tr> + <td> + Local Unit Tests + </td> + <td> + Unit tests that run locally on the Java Virtual Machine (JVM). Use these +tests to minimize execution time when your tests have no Android framework +dependencies or when you can mock the Android framework dependencies. + </td> + </tr> + + <tr> + <td> + Instrumented unit tests + </td> + <td> + Unit tests that run on an Android device or emulator. These tests have +access to <code><a href= +"/reference/android/app/Instrumentation.html">Instrumentation</a></code> +information, such as the <code><a href= +"/reference/android/content/Context.html">Context</a></code> of the app you are +testing. Use these tests when your tests have Android dependencies that mock +objects cannot satisfy. + </td> + </tr> + + <tr> + <td style="white-space:nowrap" rowspan="3"> + Integration Tests + </td> + </tr> + + <tr> + <td> + Components within your app only + </td> + <td> + This type of test verifies that the target app behaves as expected when +a user performs a specific action or enters a specific input in its activities. +For example, it allows you to check that the target app returns the correct UI +output in response to user interactions in the app’s activities. UI testing +frameworks like <a href= + "/tools/testing-support-library/index.html#Espresso">Espresso</a> allow +you to programmatically simulate user actions and test complex intra-app user +interactions. + </td> + </tr> + + <tr> + <td> + Cross-app Components + </td> + <td> + This type of test verifies the correct behavior of interactions between +different user apps or between user apps and system apps. For example, you might +want to test that your app behaves correctly when the user performs an action +in the Android Settings menu. UI testing frameworks that support cross-app +interactions, such as <a +href="/topic/libraries/testing-support-library/index.html#UIAutomator" +>UI Automator</a>, allow you to create tests for such scenarios. + </td> + </tr> </table> -<p> - You'll need to configure the testing dependencies for your project to use the - standard APIs provided by the JUnit 4 framework. If your test needs to - interact with Android dependencies, include the <a href= - "https://github.com/mockito/mockito" class="external-link">Mockito</a> - library to simplify your local unit tests. To learn more about using mock - objects in your local unit tests, see <a href= - "{@docRoot}training/testing/unit-testing/local-unit-tests.html#mocking-dependencies"> - Mocking Android dependencies</a>. -</p> - -<p> - In your app's top-level {@code build.gradle} file, you need to specify these - libraries as dependencies: -</p> - -<pre> -dependencies { - // Required -- JUnit 4 framework - testCompile 'junit:junit:4.12' - // Optional -- Mockito framework - testCompile 'org.mockito:mockito-core:1.10.19' -} -</pre> -<h3 id="config-instrumented-tests"> - Configure Your Project for Instrumented Tests -</h3> - -<p> - In your Android Studio project, you must place the source code for your - instrumentated tests under a specific directory - (<code>src/androidTest/java</code>). -</p> - -<p> - <a href="{@docRoot}tools/testing-support-library/index.html#setup">Download - the Android Testing Support Library Setup</a>, which provides APIs that allow - you to quickly build and run instrumented test code for your apps. The - Testing Support Library includes a JUnit 4 test runner (<a href= - "{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner</a> - ) and APIs for functional UI tests (<a href= - "{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> - and <a href= - "{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI - Automator</a>). -</p> - -<p> - You'll need to configure the Android testing dependencies for your project to - use the test runner and the rules APIs provided by the Testing Support - Library. To simplify your test development, we also recommend that you - include the <a href="https://github.com/hamcrest" class= - "external-link">Hamcrest</a> library, which lets you create more flexible - assertions using the Hamcrest matcher APIs. -</p> -<p> - In your app's top-level {@code build.gradle} file, you need to specify these - libraries as dependencies: -</p> -<pre> -dependencies { - androidTestCompile 'com.android.support:support-annotations:23.0.1' - androidTestCompile 'com.android.support.test:runner:0.4.1' - androidTestCompile 'com.android.support.test:rules:0.4.1' - // Optional -- Hamcrest library - androidTestCompile 'org.hamcrest:hamcrest-library:1.3' - // Optional -- UI testing with Espresso - androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' - // Optional -- UI testing with UI Automator - androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1' -} -</pre> -<p> - To use JUnit 4 test classes, make sure to specify <a href= - "{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code - AndroidJUnitRunner}</a> as the default test instrumentation runner in your - project by including the following setting in your app's module-level {@code build.gradle} - file: -</p> +<h2 id="test-apis">Test APIs</h2> -<pre> -android { - defaultConfig { - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - } -} -</pre> +<p>The following are common APIs used for testing apps on Android.</p> -<h3 id="testartifacts">Work With Test Artifacts</h3> -<p>Android Studio has two types of test artifacts: Android Instrumentation Tests -and Unit Tests. Previously, you could work with just one test artifact at a -time. Now, both test artifacts are enabled. -The advantage of enabling both test artifacts is that any changes you make to -the underlying code affect -them both. For example, if you rename a class that both test artifacts access, -both will know about the class name refactoring.</p> - -<p>The figure shows what your project looks like with both test -artifacts enabled. Notice the shading of both test artifacts.</p> - -<!-- Commenting out for now, but leaving it in case we need to add it back. -<img src="{@docRoot}images/training/testartifactseparate.png" style="float:left;width:250px;margin-right:20px" /> --> -<img src="{@docRoot}images/training/testartifactcombined.png" style="float:left;width:250px" /> -<!-- Commenting out for now, but leaving it in case we need to add it back. -<p> -By default, both test artifacts are enabled in Android Studio. To enable just -one, deselect <strong>Enable all test artifacts</strong> in your preferences: -</p> -<ol> -<li>Select -<strong>Android Studio</strong> > <strong>Preferences</strong> > <strong>Build, -Execution, Deployment</strong> > <strong>Build Tools</strong> > -<strong>Gradle</strong> > <strong>Experimental</strong>.</li> -<li>Deselect the test artifacts option.</li> -<li>Click <strong>OK</strong>.</li> -</ol> ---> +<h3 id="junit">JUnit</h3> -<h2 id="build">Build and Run Your Tests</h2> +<p>You should write your unit or integration test class as a <a href= +"http://junit.org/" class="external-link">JUnit 4</a> test class. The framework +offers a convenient way to perform common setup, teardown, and assertion +operations in your test.</p> +<p>A basic JUnit 4 test class is a Java class that contains one or more test +methods. A test method begins with the <code>@Test</code> annotation and +contains the code to exercise and verify a single functionality (that is, a +logical unit) in the component that you want to test.</p> -<p> - Android Studio provides all the tools you need to build, run, and analyze - your tests within the development environment. You can also run instrumented - tests on multiple device configurations, simultaneously, using <a href= - "https://developers.google.com/cloud-test-lab/">Cloud Test Lab</a> - integration. -</p> +<p>The following snippet shows an example JUnit 4 integration test that uses the +<a href="/topic/libraries/testing-support-library/index.html#Espresso">Espresso +APIs</a> to perform a click action on a UI element, then checks to see if +an expected string is displayed.</p> -<p class="note"> - <strong>Note:</strong> While running or debugging instrumented tests, - Android Studio does not inject the additional methods required for <a href= - "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a> - and turns the feature off. -</p> - -<h3 id="run-local-tests"> - Run Local Unit Tests -</h3> - -<p> - To run your local unit tests: -</p> - -<ol> - - <li>In the <em>Project</em> window, right click on the project and - synchronize your project. - </li> - - <!-- -<li>If you enabled one test artifact only, open the -<strong>Build Variants</strong> window by clicking the left-hand tab, then -change the test artifact to <em>Unit Tests</em>. -</li> ---> - - <li>In the <em>Project</em> window, navigate to your unit test class or - method, then right-click it and select <strong>Run</strong> <img src= - "{@docRoot}images/tools/as-run.png" alt="" style= - "vertical-align:bottom;margin:0;">. - <ul> - <li>To run all tests in the unit test directory, right-click on the - directory and select <strong>Run tests</strong> <img src= - "{@docRoot}images/tools/as-run.png" alt="" style= - "vertical-align:bottom;margin:0;">. - </li> - </ul> - </li> +<pre> +@RunWith(AndroidJUnit4.class) +@LargeTest +public class MainActivityInstrumentationTest { -</ol> + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + MainActivity.class); -<p> - The Android Plugin for Gradle compiles the local unit test code located in - the default directory ({@code src/test/java}), builds a test app, and - executes it locally using the default test runner class. Android Studio then - displays the results in the <em>Run</em> window. -</p> + @Test + public void sayHello(){ + onView(withText("Say hello!")).perform(click()); -<h3 id="run-instrumented-tests"> - Run Instrumented Tests -</h3> + onView(withId(R.id.textView)).check(matches(withText("Hello, World!"))); + } +} +</pre> -<p> - To run your instrumented tests: -</p> +<p>In your JUnit 4 test class, you can call out sections in your test code for +special processing by using the following annotations:</p> <ul> - <!-- -<li>If you enabled one test artifact only, open the -<strong>Build Variants</strong> window by clicking the left-hand tab, then set -the test artifact to <em>Android Instrumentation Tests</em>. -</li> ---> - - <li>In the <em>Project</em> window, navigate to your instrumented test class - or method, then right-click and run it using the Android Test configuration. - To run all tests in the instrumented test directory, right-click the - directory and select <strong>Run tests</strong> <img src= - "{@docRoot}images/tools/as-run.png" alt="" style= - "vertical-align:bottom;margin:0;">. - </li> +<li><code>@Before</code>: Use this annotation to specify a block of code that +contains test setup operations. The test class invokes this code block before +each test. You can have multiple <code>@Before</code> methods but the order in +which the test class calls these methods is not guaranteed.</li> + +<li><code>@After</code>: This annotation specifies a block of code that +contains test tear-down operations. The test class calls this code block after +every test method. You can define multiple <code>@After</code> operations in +your test code. Use this annotation to release any resources from memory.</li> + +<li><code>@Test</code>: Use this annotation to mark a test method. A single +test class can contain multiple test methods, each prefixed with this +annotation.</li> + +<li><code>@Rule</code>: Rules allow you to flexibly add or redefine the +behavior of each test method in a reusable way. In Android testing, use this +annotation together with one of the test rule classes that the Android Testing +Support Library provides, such as <a href= +"/reference/android/support/test/rule/ActivityTestRule.html"><code>ActivityTestRule</code></a> +or <a href= +"/reference/android/support/test/rule/ServiceTestRule.html"><code>ServiceTestRule</code></a>.</li> + +<li><code>@BeforeClass</code>: Use this annotation to specify static methods +for each test class to invoke only once. This testing step is useful for +expensive operations such as connecting to a database.</li> + +<li><code>@AfterClass</code>: Use this annotation to specify static methods for +the test class to invoke only after all tests in the class have run. This +testing step is useful for releasing any resources allocated in the +<code>@BeforeClass</code> block.</li> + +<li><code>@Test(timeout=)</code>: Some annotations support the ability to pass +in elements for which you can set values. For example, you can specify a +timeout period for the test. If the test starts but does not complete within +the given timeout period, it automatically fails. You must specify the timeout +period in milliseconds, for example: <code>@Test(timeout=5000)</code>.</li> </ul> -<p> - The <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin - for Gradle</a> compiles the instrumented test code located in the default - directory ({@code src/androidTest/java}), builds a test APK and production - APK, installs both APKs on the connected device or emulator, and runs the - tests. Android Studio then displays the results of the instrumented test execution in the - <em>Run</em> window. -</p> - -<h3 id="run-ctl">Run Instrumented Tests with Cloud Test Lab</h3> - -<p> - Using <a href="https://developers.google.com/cloud-test-lab/">Cloud Test - Lab</a>, you can simultaneously test your app on many popular Android - devices, across multiple languages, screen orientations, and versions of the - Android platform. These tests run on actual physical devices in remote Google - data centers. You can also <a href= - "https://developers.google.com/cloud-test-lab/test-screenshots">configure - your instrumented tests to take screenshots</a> while Cloud Test Lab runs its - tests. You can <a href= - "https://developers.google.com/cloud-test-lab/command-line">deploy tests to - Cloud Test Lab from the command line</a>, or from Android Studio's integrated - testing tools. -</p> - -<p> - Android Studio allows you to connect to your Google Cloud Platform account, - configure your tests, deploy them to Cloud Test Lab, and analyze the results - all within the development environment. Cloud Test Lab in Android Studio - supports the following Android test frameworks: <a href= - "{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>, - <a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI - Automator 2.0</a>, or <a class="external-link" href= - "https://github.com/robotiumtech/robotium">Robotium</a>. Test results provide - test logs and include the details of any app failures. -</p> - -<p> - Before you can start using Cloud Test Lab, you need to: -</p> - -<ol> - <li> - <a href="https://console.developers.google.com/freetrial">Create a - Google Cloud Platform account</a> to use with active billing. - </li> +<p>For more annotations, see the documentation for <a +href="http://junit.sourceforge.net/javadoc/org/junit/package-summary.html" +class="external-link">JUnit annotations</a> and the <a +href="/reference/android/support/annotation/package-summary.html">Android +annotations</a>.</p> - <li> - <a href="https://support.google.com/cloud/answer/6251787">Create a Google - Cloud project</a> for your app. - </li> +<p>Use the JUnit <code><a href= +"/reference/junit/framework/Assert.html">Assert</a></code> class to verify the +correctness of an object's state. The assert methods compare values you expect +from a test to the actual results and throw an exception if the comparison +fails. <a href="#AssertionClasses">Assertion classes</a> describes these +methods in more detail.</p> - <li> - <a href="https://support.google.com/cloud/answer/6288653">Set up an active - billing account</a> and associate it with the project you just created. - </li> -</ol> +<h3 id="support-library">Android Testing Support Library</h3> -<h4 id="configure-matrix"> -Configure a test matrix and run a test -</h4> +<p>The <a href="/topic/libraries/testing-support-library/index.html">Android +Testing Support Library</a> provides a set of APIs that allow you +to quickly build and run test code for your apps, including JUnit 4 and +functional UI tests. The library includes the following instrumentation-based +APIs that are useful when you want to automate your tests:</p> -<p> - Android Studio provides integrated tools that allow you to configure how you - want to deploy your tests to Cloud Test Lab. After you have created a Google - Cloud project with active billing, you can create a test configuration and - run your tests: -</p> +<dt><a href="/topic/libraries/testing-support-library/index.html#AndroidJUnitRunner" +>AndroidJUnitRunner</a></dt> +<dd>A JUnit 4-compatible test runner for Android.</dd> -<ol> - <li>Click <strong>Run</strong> > <strong>Edit Configurations</strong> from - the main menu. - </li> +<dt><a href="/topic/libraries/testing-support-library/index.html#Espresso" +>Espresso</a></dt> +<dd>A UI testing framework; suitable for functional UI testing within an +app.</dd> - <li>Click <strong>Add New Configuration (+)</strong> and select - <strong>Android Tests</strong>. - </li> - - <li>In the Android Test configuration dialog: - <ol type="a"> - <li>Enter or select the details of your test, such as the test name, module - type, test type, and test class. - </li> - - <li>From the <em>Target</em> drop-down menu under <em>Deployment Target - Options</em>, select <strong>Cloud Test Lab Device Matrix</strong>. - </li> - - <li>If you are not logged in, click <strong>Connect to Google Cloud - Platform</strong> and allow Android Studio access to your account. - </li> +<dt><a href="/topic/libraries/testing-support-library/index.html#UIAutomator" +>UI Automator</a></dt> +<dd>A UI testing framework suitable for cross-app functional UI testing between +both system and installed apps.</dd> - <li>Next to <em>Cloud Project</em>, click the <img src= - "{@docRoot}images/tools/as-wrench.png" alt="wrench and nut" style= - "vertical-align:bottom;margin:0;"> button and select your Google Cloud - Platform project from the list. - </li> - </ol> - </li> - <li>Create and configure a test matrix: - <ol type="a"> - <li>Next to the <em>Matrix Configuration</em> drop-down list, click <strong> - Open Dialog</strong> <img src="{@docRoot}images/tools/as-launchavdm.png" - alt="ellipses button" style="vertical-align:bottom;margin:0;">. - </li> +<h3 id="assertion">Assertion classes</h3> - <li>Click <strong>Add New Configuration (+)</strong>. - </li> +<p>Because Android Testing Support Library APIs extend JUnit, you can use +assertion methods to display the results of tests. An assertion method compares +an actual value returned by a test to an expected value, and throws an +AssertionException if the comparison test fails. Using assertions is more +convenient than logging, and provides better test performance.</p> - <li>In the <strong>Name</strong> field, enter a name for your new - configuration. - </li> +<p>To simplify test development, you should use the <a href= +"https://github.com/hamcrest" class="external-link">Hamcrest library</a>, which +lets you create more flexible tests using the Hamcrest matcher APIs.</p> - <li>Select the device(s), Android version(s), locale(s) and screen - orientation(s) that you want to test your app with. Cloud Test Lab will test - your app against every combination of your selections when generating test - results. - </li> - <li>Click <strong>OK</strong> to save your configuration. - </li> - </ol> - </li> - <li>Click <strong>OK</strong> in the <em>Run/Debug Configurations</em> dialog - to exit. - </li> +<h3 id="monkeyrunner">Monkey and monkeyrunner</h3> - <li>Run your tests by clicking <strong>Run</strong> <img src= - "{@docRoot}images/tools/as-run.png" alt="" style= - "vertical-align:bottom;margin:0;">. - </li> -</ol> +<p>The Android SDK includes two tools for functional-level app testing:</p> -<img src="{@docRoot}images/training/ctl-config.png" alt=""> -<p class="img-caption"> - <strong>Figure 1.</strong> Creating a test configuration for Cloud Test - Lab. -</p> +<dl> +<dt>Monkey</dt> +<dd>This is a command-line tool that sends pseudo-random streams of keystrokes, +touches, and gestures to a device. You run it with the <a href= +"/studio/command-line/adb.html">Android Debug Bridge (adb)</a> tool, and use it +to stress-test your app, report back errors any that are encountered, or repeat +a stream of events by running the tool multiple times with the same random +number seed.</dd> -<h4 id="ctl-results"> - Analyzing test results -</h4> -<p> - When Cloud Test Lab completes running your tests, the <em>Run</em> window will - open to show the results, as shown in figure 2. You may need to click - <strong>Show Passed</strong> <img src="{@docRoot}images/tools/as-ok.png" alt= - "" style="vertical-align:bottom;margin:0;"> to see all your executed tests. -</p> +<dt>monkeyrunner</dt> +<dd>This tool is an API and execution environment for test programs written in +Python. The API includes functions for connecting to a device, installing and +uninstalling packages, taking screenshots, comparing two images, and running a +test package against an app. Using the API, you can write a wide range of +large, powerful, and complex tests. You run programs that use the API with the +<code>monkeyrunner</code> command-line tool.</dd> +</dl> -<img src="{@docRoot}images/training/ctl-test-results.png" alt=""> -<p class="img-caption"> - <strong>Figure 2.</strong> Viewing the results of instrumented tests using - Cloud Test Lab. -</p> -<p> - You can also analyze your tests on the web by following the link displayed at - the beginning of the test execution log in the <em>Run</em> window, as shown - in figure 3. -</p> -<img src="{@docRoot}images/training/ctl-exec-log.png" alt=""> +<h2 id="build">Guides for Building Android Tests</h2> -<p class="img-caption"> - <strong>Figure 3.</strong> Click the link to view detailed test results on - the web. +<p>The following documents provide more detail about how to build and run +a variety of test types: </p> -<p> - To learn more about interpreting web results, see <a href= - "https://developers.google.com/cloud-test-lab/analyzing-results">Analyzing - Cloud Test Lab Web Results</a>. -</p>
\ No newline at end of file +<dl> + <dt><a href="/training/testing/unit-testing/local-unit-tests.html" + >Building Local Unit Tests</a></dt> + <dd>Build unit tests that have no dependencies or only simple dependencies + that you can mock, which run on your local JVM.</dd> + <dt><a href= + "/training/testing/unit-testing/instrumented-unit-tests.html" + >Building Instrumented Unit Tests</a></dt> + <dd>Build complex unit tests with + Android dependencies that cannot be satisfied with mock objects, + which run on a hardware device or emulator.</dd> + <dt><a href="/training/testing/ui-testing/index.html">Automating User + Interface Tests</a></dt> + <dd>Create tests to verify that the user interface + behaves correctly for user interactions within a single app or for + interactions across multiple apps.</dd> + <dt><a href="/training/testing/integration-testing/index.html">Testing App + Compontent Integrations</a></dt> + <dd>Verify the behavior of components that + users do not directly interact with, such as a service or a content + provider.</dd> + <dt><a href="/training/testing/performance.html">Testing Display + Performance</a></dt> + <dd>Write tests that measure your app's UI performance to ensure + a consistently smooth user experience.</dd> +</dl>
\ No newline at end of file diff --git a/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd b/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd index 38321eed93b3..f65766d825a9 100644 --- a/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd +++ b/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd @@ -7,21 +7,20 @@ trainingnavtop=true <!-- This is the training bar --> <div id="tb-wrapper"> <div id="tb"> - <h2>Dependencies and Prerequisites</h2> - - <ul> - <li>Android 2.2 (API level 8) or higher</li> - <li><a href="{@docRoot}tools/testing-support-library/index.html"> - Android Testing Support Library</a></li> - <li><a href="{@docRoot}tools/studio/index.html">Android Studio (latest version)</a>.</li> - </ul> - <h2>This lesson teaches you to</h2> <ol> <li><a href="#setup">Set Up Your Testing Environment</a></li> - <li><a href="#build">Create a Instrumented Unit Test Class</a></li> - <li><a href="#run">Run Instrumented Unit Tests</a></li> + <li><a href="#build">Create a Instrumented Unit Test Class</a> + <ol> + <li><a href="#test-suites">Create a test suite</a></li> + </ol> + </li> + <li><a href="#run">Run Instrumented Unit Tests</a> + <ol> + <li><a href="#run-ctl">Run your tests with Firebase Test Lab</a></li> + </ol> + </li> </ol> <h2>Try it out</h2> @@ -36,25 +35,88 @@ class="external-link">Unit and UI Testing in Android Studio (codelab)</a></li> </div> </div> +<p>Instrumented unit tests are tests that run on physical devices and +emulators, and they can take advantage of the Android framework APIs and +supporting APIs, such as the Android Testing Support Library. You should create +instrumented unit tests if your tests need access to instrumentation +information (such as the target app's {@link android.content.Context}) or if +they require the real implementation of an Android framework component (such as +a {@link android.os.Parcelable} or {@link android.content.SharedPreferences} +object).</p> + +<p>Using instrumented unit tests also helps to reduce the effort required to +write and maintain mock code. You are still free to use a mocking framework, if +you choose, to simulate any dependency relationships.</p> + + +<h2 id="setup">Set Up Your Testing Environment</h2> + +<p>In your Android Studio project, you must store the source files for +instrumented tests at +<code><var>module-name</var>/src/androidTests/java/</code>. This directory +already exists when you create a new project.</p> + +<p>Before you begin, you should + <a href="{@docRoot}tools/testing-support-library/index.html#setup">download + the Android Testing Support Library Setup</a>, which provides APIs that allow + you to quickly build and run instrumented test code for your apps. The + Testing Support Library includes a JUnit 4 test runner (<a href= + "{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner</a> + ) and APIs for functional UI tests (<a href= + "{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> + and <a href= + "{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI + Automator</a>). +</p> + +<p>You also need to configure the Android testing dependencies for your project +to use the test runner and the rules APIs provided by the Testing Support +Library. To simplify your test development, you should also include the +<a href="https://github.com/hamcrest" class="external-link">Hamcrest</a> +library, which lets you create more flexible assertions using the Hamcrest +matcher APIs.</p> + <p> -Instrumented unit tests are unit tests that run on physical devices and emulators, instead of -the Java Virtual Machine (JVM) on your local machine. You should create instrumented unit tests -if your tests need access to instrumentation information (such as the target app's -{@link android.content.Context}) or if they require the real implementation of an Android framework -component (such as a {@link android.os.Parcelable} or {@link android.content.SharedPreferences} -object). Using instrumented unit tests also helps to reduce the effort required to write and -maintain mock code. You are still free to use a mocking framework, if you choose, to simulate any -dependency relationships. Instrumented unit tests can take advantage of the Android framework APIs -and supporting APIs, such as the Android Testing Support Library. + In your app's top-level {@code build.gradle} file, you need to specify these + libraries as dependencies: </p> -<h2 id="setup">Set Up Your Testing Environment</h2> -<p>Before building your instrumented unit test, make sure to configure your test source code -location and project dependencies, as described in -<a href="{@docRoot}training/testing/start/index.html#config-instrumented-tests"> -Getting Started with Testing</a>.</p> +<pre> +dependencies { + androidTestCompile 'com.android.support:support-annotations:24.0.0' + androidTestCompile 'com.android.support.test:runner:0.5' + androidTestCompile 'com.android.support.test:rules:0.5' + // Optional -- Hamcrest library + androidTestCompile 'org.hamcrest:hamcrest-library:1.3' + // Optional -- UI testing with Espresso + androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' + // Optional -- UI testing with UI Automator + androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' +} +</pre> + + +<p> + To use JUnit 4 test classes, make sure to specify <a href= + "{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code + AndroidJUnitRunner}</a> as the default test instrumentation runner in your + project by including the following setting in your app's module-level {@code build.gradle} + file: +</p> + +<pre> +android { + defaultConfig { + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } +} +</pre> + + + <h2 id="build">Create an Instrumented Unit Test Class</h2> + <p> Your instrumented unit test class should be written as a JUnit 4 test class. To learn more about creating JUnit 4 test classes and using JUnit 4 assertions and annotations, see @@ -119,7 +181,7 @@ public class LogHistoryAndroidUnitTest { } </pre> -<h3 id="test-suites">Creating a test suite</h3> +<h3 id="test-suites">Create a test suite</h3> <p> To organize the execution of your instrumented unit tests, you can group a collection of test classes in a <em>test suite</em> class and run these tests together. Test suites can be nested; @@ -162,9 +224,198 @@ import org.junit.runners.Suite; public class UnitTestSuite {} </pre> + <h2 id="run">Run Instrumented Unit Tests</h2> + +<p>To run your instrumented tests, follow these steps:</p> + +<ol> + <li>Be sure your project is synchronized with Gradle by clicking + <b>Sync Project</b> <img src="/images/tools/sync-project.png" alt="" + class="inline-icon"> in the toolbar.</li> + + <li>Run your test in one of the following ways: + <ul> + <li>To run a single test, open the <b>Project</b> window, and then + right-click a test and click <strong>Run</strong> <img src= + "{@docRoot}images/tools/as-run.png" alt="" class="inline-icon">.</li> + <li>To test all methods in a class, right-click a class or method in the +test file and click <b>Run</b> <img src= + "{@docRoot}images/tools/as-run.png" alt="" class="inline-icon">. + <li>To run all tests in a directory, right-click on the + directory and select <strong>Run tests</strong> <img src= + "{@docRoot}images/tools/as-run.png" alt="" class="inline-icon">. + </li> + </ul> + </li> + +</ol> + +<p> + The <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin + for Gradle</a> compiles the instrumented test code located in the default + directory ({@code src/androidTest/java/}), builds a test APK and production + APK, installs both APKs on the connected device or emulator, and runs the + tests. Android Studio then displays the results of the instrumented test execution in the + <em>Run</em> window. +</p> + +<p class="note"> + <strong>Note:</strong> While running or debugging instrumented tests, + Android Studio does not inject the additional methods required for <a href= + "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a> + and turns the feature off. +</p> + + +<h3 id="run-ctl">Run your tests with Firebase Test Lab</h3> + +<p>Using <a href="https://firebase.google.com/docs/test-lab/">Firebase Test +Lab</a>, you can simultaneously test your app on many popular Android devices +and configurations such as locale, orientation, screen size, and platform +version. These tests run on actual physical devices in remote Google data +centers. You can deploy to Firebase Test Lab directly from Android Studio or +from the command line. Test results provide test logs and include the details +of any app failures.</p> + +<p> + Before you can start using Firebase Test Lab, you need to: +</p> + +<ol> + <li> + <a href="https://console.developers.google.com/freetrial">Create a + Google Cloud Platform account</a> to use with active billing. + </li> + + <li> + <a href="https://support.google.com/cloud/answer/6251787">Create a Google + Cloud project</a> for your app. + </li> + + <li> + <a href="https://support.google.com/cloud/answer/6288653">Set up an active + billing account</a> and associate it with the project you just created. + </li> +</ol> + + +<h4 id="configure-matrix"> +Configure a test matrix and run a test +</h4> + +<p> + Android Studio provides integrated tools that allow you to configure how you + want to deploy your tests to Firebase Test Lab. After you have created a Google + Cloud project with active billing, you can create a test configuration and + run your tests: +</p> + +<ol> + <li>Click <strong>Run</strong> > <strong>Edit Configurations</strong> from + the main menu. + </li> + + <li>Click <strong>Add New Configuration (+)</strong> and select + <strong>Android Tests</strong>. + </li> + + <li>In the Android Test configuration dialog: + <ol type="a"> + <li>Enter or select the details of your test, such as the test name, module + type, test type, and test class. + </li> + + <li>From the <em>Target</em> drop-down menu under <em>Deployment Target + Options</em>, select <strong>Cloud Test Lab Device Matrix</strong>. + </li> + + <li>If you are not logged in, click <strong>Connect to Google Cloud + Platform</strong> and allow Android Studio access to your account. + </li> + + <li>Next to <em>Cloud Project</em>, click the <img src= + "{@docRoot}images/tools/as-wrench.png" alt="wrench and nut" style= + "vertical-align:bottom;margin:0;"> button and select your Google Cloud + Platform project from the list. + </li> + </ol> + </li> + + <li>Create and configure a test matrix: + <ol type="a"> + <li>Next to the <em>Matrix Configuration</em> drop-down list, click <strong> + Open Dialog</strong> <img src="{@docRoot}images/tools/as-launchavdm.png" + alt="ellipses button" style="vertical-align:bottom;margin:0;">. + </li> + + <li>Click <strong>Add New Configuration (+)</strong>. + </li> + + <li>In the <strong>Name</strong> field, enter a name for your new + configuration. + </li> + + <li>Select the device(s), Android version(s), locale(s) and screen + orientation(s) that you want to test your app with. Firebase Test Lab will + test your app against every combination of your selections when generating + test results. + </li> + + <li>Click <strong>OK</strong> to save your configuration. + </li> + </ol> + </li> + + <li>Click <strong>OK</strong> in the <em>Run/Debug Configurations</em> dialog + to exit. + </li> + + <li>Run your tests by clicking <strong>Run</strong> <img src= + "{@docRoot}images/tools/as-run.png" alt="" style= + "vertical-align:bottom;margin:0;">. + </li> +</ol> + +<img src="{@docRoot}images/training/ctl-config.png" alt=""> +<p class="img-caption"> + <strong>Figure 1.</strong> Creating a test configuration for Firebase Test + Lab. +</p> + +<h4 id="ctl-results"> + Analyzing test results +</h4> + +<p> + When Firebase Test Lab completes running your tests, the <em>Run</em> window + will open to show the results, as shown in figure 2. You may need to click + <strong>Show Passed</strong> <img src="{@docRoot}images/tools/as-ok.png" alt= + "" style="vertical-align:bottom;margin:0;"> to see all your executed tests. +</p> + +<img src="{@docRoot}images/training/ctl-test-results.png" alt=""> + +<p class="img-caption"> + <strong>Figure 2.</strong> Viewing the results of instrumented tests using + Firebase Test Lab. +</p> + +<p> + You can also analyze your tests on the web by following the link displayed at + the beginning of the test execution log in the <em>Run</em> window, as shown + in figure 3. +</p> + +<img src="{@docRoot}images/training/ctl-exec-log.png" alt=""> + +<p class="img-caption"> + <strong>Figure 3.</strong> Click the link to view detailed test results on + the web. +</p> + <p> -To run your test, follow the steps for running instrumented tests -described in <a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests"> -Getting Started with Testing</a>. + To learn more about interpreting web results, see <a href= + "https://firebase.google.com/docs/test-lab/analyzing-results">Analyze + Firebase Test Lab for Android Results</a>. </p>
\ No newline at end of file diff --git a/docs/html/training/testing/unit-testing/local-unit-tests.jd b/docs/html/training/testing/unit-testing/local-unit-tests.jd index 893d957fcc41..25b62fa2e393 100644 --- a/docs/html/training/testing/unit-testing/local-unit-tests.jd +++ b/docs/html/training/testing/unit-testing/local-unit-tests.jd @@ -7,17 +7,16 @@ trainingnavtop=true <!-- This is the training bar --> <div id="tb-wrapper"> <div id="tb"> - <h2>Dependencies and Prerequisites</h2> - - <ul> - <li><a href="{@docRoot}tools/studio/index.html">Android Studio (latest version)</a>.</li> - </ul> <h2>This lesson teaches you to</h2> <ol> <li><a href="#setup">Set Up Your Testing Environment</a></li> - <li><a href="#build">Create a Local Unit Test Class</a></li> + <li><a href="#build">Create a Local Unit Test Class</a> + <ol> + <li><a href="#mocking-dependencies">Mock Android dependencies</a></li> + </ol> + </li> <li><a href="#run">Run Local Unit Tests</a></li> </ol> @@ -42,13 +41,35 @@ test is greatly reduced. With this approach, you normally use a mocking framewor dependency relationships.</p> <h2 id="setup">Set Up Your Testing Environment</h2> -<p>Before building your local unit test, make sure to configure your test source code location and -project dependencies, as described in -<a href="{@docRoot}training/testing/start/index.html#config-local-tests"> -Getting Started with Testing</a>.</p> + +<p>In your Android Studio project, you must store the source files for local +unit tests at <code><var>module-name</var>/src/test/java/</code>. This directory +already exists when you create a new project.</p> + +<p>You also need to configure the testing dependencies for your project to use +the standard APIs provided by the JUnit 4 framework. If your test needs to +interact with Android dependencies, include the <a href= +"https://github.com/mockito/mockito" class="external-link">Mockito</a> library +to simplify your local unit tests. To learn more about using mock objects in +your local unit tests, see <a href= +"{@docRoot}training/testing/unit-testing/local-unit-tests.html#mocking-dependencies"> +Mocking Android dependencies</a>.</p> + +<p>In your app's top-level {@code build.gradle} file, you need to specify these +libraries as dependencies:</p> + +<pre> +dependencies { + // Required -- JUnit 4 framework + testCompile 'junit:junit:4.12' + // Optional -- Mockito framework + testCompile 'org.mockito:mockito-core:1.10.19' +} +</pre> <h2 id="build">Create a Local Unit Test Class</h2> + <p>Your local unit test class should be written as a JUnit 4 test class. <a href="http://junit.org/" class="external-link">JUnit</a> is the most popular and widely-used unit testing framework for Java. The latest version of this framework, JUnit 4, @@ -90,7 +111,7 @@ can use <a href="https://github.com/hamcrest" class="external-link"> Hamcrest matchers</a> (such as the {@code is()} and {@code equalTo()} methods) to match the returned result against the expected result.</p> -<h3 id="mocking-dependencies">Mocking Android dependencies</h3> +<h3 id="mocking-dependencies">Mock Android dependencies</h3> <p> By default, the <a href="{@docRoot}tools/building/plugin-for-gradle.html"> Android Plug-in for Gradle</a> executes your local unit tests against a modified @@ -174,10 +195,37 @@ class="external-link">Mockito API reference</a> and the class="external-link">sample code</a>. </p> + <h2 id="run">Run Local Unit Tests</h2> + +<p>To run your local unit tests, follow these steps:</p> + +<ol> + + <li>Be sure your project is synchronized with Gradle by clicking + <b>Sync Project</b> <img src="/images/tools/sync-project.png" alt="" + class="inline-icon"> in the toolbar.</li> + + <li>Run your test in one of the following ways: + <ul> + <li>To run a single test, open the <b>Project</b> window, and then + right-click a test and click <strong>Run</strong> <img src= + "{@docRoot}images/tools/as-run.png" alt="" class="inline-icon">.</li> + <li>To test all methods in a class, right-click a class or method in the +test file and click <b>Run</b> <img src= + "{@docRoot}images/tools/as-run.png" alt="" class="inline-icon">. + <li>To run all tests in a directory, right-click on the + directory and select <strong>Run tests</strong> <img src= + "{@docRoot}images/tools/as-run.png" alt="" class="inline-icon">. + </li> + </ul> + </li> + +</ol> + <p> -To run your tests, follow the steps for running local unit tests -described in <a href="{@docRoot}training/testing/start/index.html#run-local-tests"> -Getting Started with Testing</a>. + The Android Plugin for Gradle compiles the local unit test code located in + the default directory ({@code src/test/java/}), builds a test app, and + executes it locally using the default test runner class. Android Studio then + displays the results in the <b>Run</b> window. </p> - diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index c6977746f64e..d5143dae7851 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -75,6 +75,9 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { private long mEnterAnimationEnd; private long mExitAnimationEnd; + /** Callback that blocks invalidation. Used for drawable initialization. */ + private BlockInvalidateCallback mBlockInvalidateCallback; + // overrides from Drawable @Override @@ -500,11 +503,14 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { * @param d The drawable to initialize. */ private void initializeDrawableForDisplay(Drawable d) { + if (mBlockInvalidateCallback == null) { + mBlockInvalidateCallback = new BlockInvalidateCallback(); + } + // Temporary fix for suspending callbacks during initialization. We // don't want any of these setters causing an invalidate() since that // may call back into DrawableContainer. - final Callback cb = d.getCallback(); - d.setCallback(null); + d.setCallback(mBlockInvalidateCallback.wrap(d.getCallback())); try { if (mDrawableContainerState.mEnterFadeDuration <= 0 && mHasAlpha) { @@ -537,7 +543,7 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { hotspotBounds.right, hotspotBounds.bottom); } } finally { - d.setCallback(cb); + d.setCallback(mBlockInvalidateCallback.unwrap()); } } @@ -1215,4 +1221,41 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { mLastIndex = -1; mLastDrawable = null; } + + /** + * Callback that blocks drawable invalidation. + */ + private static class BlockInvalidateCallback implements Drawable.Callback { + private Drawable.Callback mCallback; + + public BlockInvalidateCallback wrap(Drawable.Callback callback) { + mCallback = callback; + return this; + } + + public Drawable.Callback unwrap() { + final Drawable.Callback callback = mCallback; + mCallback = null; + return callback; + } + + @Override + public void invalidateDrawable(@NonNull Drawable who) { + // Ignore invalidation. + } + + @Override + public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) { + if (mCallback != null) { + mCallback.scheduleDrawable(who, what, when); + } + } + + @Override + public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) { + if (mCallback != null) { + mCallback.unscheduleDrawable(who, what); + } + } + } } diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index 8efd5991a401..39184f1af878 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -467,11 +467,11 @@ public class AudioRecord implements AudioRouting * <p> * If the audio source is not set with {@link #setAudioSource(int)}, * {@link MediaRecorder.AudioSource#DEFAULT} is used. - * <br>If the audio format is not specified or is incomplete, its sample rate will be the - * default output sample rate of the device (see - * {@link AudioManager#PROPERTY_OUTPUT_SAMPLE_RATE}), its channel configuration will be + * <br>If the audio format is not specified or is incomplete, its channel configuration will be * {@link AudioFormat#CHANNEL_IN_MONO}, and the encoding will be * {@link AudioFormat#ENCODING_PCM_16BIT}. + * The sample rate will depend on the device actually selected for capture and can be queried + * with {@link #getSampleRate()} method. * <br>If the buffer size is not specified with {@link #setBufferSizeInBytes(int)}, * the minimum buffer size for the source is used. */ diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 9a816683f30a..12d5eade36d2 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -619,11 +619,11 @@ public class AudioTrack extends PlayerBase * <p> * If the audio attributes are not set with {@link #setAudioAttributes(AudioAttributes)}, * attributes comprising {@link AudioAttributes#USAGE_MEDIA} will be used. - * <br>If the audio format is not specified or is incomplete, its sample rate will be the - * default output sample rate of the device (see - * {@link AudioManager#PROPERTY_OUTPUT_SAMPLE_RATE}), its channel configuration will be + * <br>If the audio format is not specified or is incomplete, its channel configuration will be * {@link AudioFormat#CHANNEL_OUT_STEREO} and the encoding will be * {@link AudioFormat#ENCODING_PCM_16BIT}. + * The sample rate will depend on the device actually selected for playback and can be queried + * with {@link #getSampleRate()} method. * <br>If the buffer size is not specified with {@link #setBufferSizeInBytes(int)}, * and the mode is {@link AudioTrack#MODE_STREAM}, the minimum buffer size is used. * <br>If the transfer mode is not specified with {@link #setTransferMode(int)}, diff --git a/packages/CtsShim/CtsShim.apk b/packages/CtsShim/CtsShim.apk Binary files differindex 7a27a438fcc6..27289037dd8b 100644 --- a/packages/CtsShim/CtsShim.apk +++ b/packages/CtsShim/CtsShim.apk diff --git a/packages/CtsShim/CtsShimPriv.apk b/packages/CtsShim/CtsShimPriv.apk Binary files differindex 63e86883589b..9a8e75c28b05 100644 --- a/packages/CtsShim/CtsShimPriv.apk +++ b/packages/CtsShim/CtsShimPriv.apk diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 2f5d97ceac84..68ce2cbe59fa 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -72,7 +72,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Ukládání snímku obrazovky..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Ukládání snímku obrazovky..."</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"Probíhá ukládání snímku obrazovky."</string> - <string name="screenshot_saved_title" msgid="6461865960961414961">"Snímek obrazovky Snímek obrazovky pořízen."</string> + <string name="screenshot_saved_title" msgid="6461865960961414961">"Snímek obrazovky pořízen"</string> <string name="screenshot_saved_text" msgid="2685605830386712477">"Klepnutím zobrazíte snímek obrazovky."</string> <string name="screenshot_failed_title" msgid="705781116746922771">"Snímek obrazovky se nepodařilo zachytit."</string> <string name="screenshot_failed_to_save_unknown_text" msgid="7887826345701753830">"Při ukládání snímku obrazovky došlo k problému."</string> diff --git a/packages/SystemUI/res/values/strings_tv.xml b/packages/SystemUI/res/values/strings_tv.xml index b1d23d899852..f49d2019873c 100644 --- a/packages/SystemUI/res/values/strings_tv.xml +++ b/packages/SystemUI/res/values/strings_tv.xml @@ -44,4 +44,8 @@ <string name="font_roboto_regular" translatable="false">sans-serif</string> <!-- DO NOT TRANSLATE --> <string name="font_roboto_light" translatable="false">sans-serif-light</string> + <!-- Package names to be blacklisted in Recents, add package names into overlay as needed --> + <string-array name="recents_tv_blacklist_array"> + </string-array> + </resources> diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index cad7f647e031..6759e6bcf8cd 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -923,6 +923,11 @@ public class KeyguardViewMediator extends SystemUI { // In this case, send out ACTION_USER_PRESENT here instead of in // handleKeyguardDone() sendUserPresentBroadcast(); + } else if (mSystemReady && shouldWaitForProvisioning()) { + // Skipping the lockscreen because we're not yet provisioned, but we still need to + // notify the StrongAuthTracker that it's now safe to run trust agents, in case the + // user sets a credential later. + getLockPatternUtils().userPresent(KeyguardUpdateMonitor.getCurrentUser()); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java index 8a0079d2c537..0de1e3022b6c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java @@ -233,6 +233,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene setVisibility(View.GONE); } mNotifQsContainer.setCustomizerAnimating(false); + mRecyclerView.setAdapter(mTileAdapter); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index f0605020c7d4..8e4ed91837a9 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -112,6 +112,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } public void setTileSpecs(List<String> currentSpecs) { + if (currentSpecs.equals(mCurrentSpecs)) { + return; + } mCurrentSpecs = currentSpecs; recalcSpecs(); } @@ -257,7 +260,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } holder.mTileView.onStateChanged(info.state); holder.mTileView.setAppLabel(info.appLabel); - holder.mTileView.setShowAppLabel(mTileDividerIndex > -1 && position > mTileDividerIndex); + holder.mTileView.setShowAppLabel(position > mEditIndex && !info.isSystem); if (mAccessibilityManager.isTouchExplorationEnabled()) { final boolean selectable = !mAccessibilityMoving || position < mEditIndex; @@ -292,13 +295,11 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mTiles.remove(mEditIndex--); notifyItemRemoved(mEditIndex - 1); move(mAccessibilityFromIndex, position, v); - updateDividerLocations(); notifyDataSetChanged(); - saveSpecs(mHost); } private void showAccessibilityDialog(final int position, final View v) { - TileInfo info = mTiles.get(position); + final TileInfo info = mTiles.get(position); CharSequence[] options = new CharSequence[] { mContext.getString(R.string.accessibility_qs_edit_move_tile, info.state.label), mContext.getString(R.string.accessibility_qs_edit_remove_tile, info.state.label), @@ -310,7 +311,9 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta if (which == 0) { startAccessibleDrag(position); } else { - move(position, mEditIndex, v); + move(position, info.isSystem ? mEditIndex : mTileDividerIndex, v); + notifyItemChanged(mTileDividerIndex); + notifyDataSetChanged(); } } }).setNegativeButton(android.R.string.cancel, null) @@ -334,40 +337,12 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } private boolean move(int from, int to, View v) { - if (to >= mEditIndex) { - if (from < mEditIndex) { - // Removing a tile. - // Sort tiles into system/non-system groups. - TileInfo tile = mTiles.get(from); - if (tile.isSystem) { - if (to > mTileDividerIndex) { - to = mTileDividerIndex; - } - } else { - if (mTileDividerIndex == mTiles.size() - 1) { - notifyItemChanged(mTileDividerIndex); - } - if (to <= mTileDividerIndex) { - to = mTileDividerIndex; - } - } - } else { - if (to > mEditIndex) { - // Don't allow tiles to be dragged around when they aren't added. - to = from; - } - // Allow the case where to == mEditIndex to fall through and swap which - // side the tile is currently on. - // This lets the the cases where all tiles are on one side of the line - // work. - } + if (to == from) { + return true; } CharSequence fromLabel = mTiles.get(from).state.label; move(from, to, mTiles); updateDividerLocations(); - if (to == from) { - return true; - } CharSequence announcement; if (to >= mEditIndex) { MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_QS_EDIT_REMOVE_SPEC, @@ -427,7 +402,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private <T> void move(int from, int to, List<T> list) { list.add(to, list.remove(from)); notifyItemMoved(from, to); - notifyItemChanged(to); } public class Holder extends ViewHolder { @@ -499,7 +473,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final ViewHolder holder = parent.getChildViewHolder(child); - if (holder.getAdapterPosition() < mEditIndex) { + if (holder.getAdapterPosition() < mEditIndex && !(child instanceof TextView)) { continue; } @@ -530,7 +504,15 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta @Override public void onSelectedChanged(ViewHolder viewHolder, int actionState) { super.onSelectedChanged(viewHolder, actionState); + if (actionState != ItemTouchHelper.ACTION_STATE_DRAG) { + viewHolder = null; + } + if (viewHolder == mCurrentDrag) return; if (mCurrentDrag != null) { + int position = mCurrentDrag.getAdapterPosition(); + TileInfo info = mTiles.get(position); + mCurrentDrag.mTileView.setShowAppLabel( + position > mEditIndex && !info.isSystem); mCurrentDrag.stopDrag(); mCurrentDrag = null; } @@ -547,6 +529,12 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } @Override + public boolean canDropOver(RecyclerView recyclerView, ViewHolder current, + ViewHolder target) { + return target.getAdapterPosition() <= mEditIndex + 1; + } + + @Override public int getMovementFlags(RecyclerView recyclerView, ViewHolder viewHolder) { if (viewHolder.getItemViewType() == TYPE_EDIT) { return makeMovementFlags(0, 0); diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java index 777ed6a41c63..1431b22b654e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java @@ -155,7 +155,7 @@ public class TileQueryHelper { addTile(spec, appLabel, state, false); continue; } - if (info.serviceInfo.icon == 0) { + if (info.serviceInfo.icon == 0 && info.serviceInfo.applicationInfo.icon == 0) { continue; } Drawable icon = info.serviceInfo.loadIcon(pm); diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java index 46e7277e36d4..d3f5d2667ebf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java @@ -84,11 +84,13 @@ public class CustomTile extends QSTile<QSTile.State> implements TileChangeListen PackageManager pm = mContext.getPackageManager(); ServiceInfo info = pm.getServiceInfo(mComponent, PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE); + int icon = info.icon != 0 ? info.icon + : info.applicationInfo.icon; // Update the icon if its not set or is the default icon. boolean updateIcon = mTile.getIcon() == null || iconEquals(mTile.getIcon(), mDefaultIcon); - mDefaultIcon = info.icon != 0 ? android.graphics.drawable.Icon - .createWithResource(mComponent.getPackageName(), info.icon) : null; + mDefaultIcon = icon != 0 ? android.graphics.drawable.Icon + .createWithResource(mComponent.getPackageName(), icon) : null; if (updateIcon) { mTile.setIcon(mDefaultIcon); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java index dd467793d671..d68502ee956e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java +++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java @@ -88,7 +88,6 @@ public class TileLifecycleManager extends BroadcastReceiver implements mHandler = handler; mIntent = intent; mIntent.putExtra(TileService.EXTRA_SERVICE, service.asBinder()); - mIntent.putExtra(TileService.EXTRA_TILE, tile); mUser = user; if (DEBUG) Log.d(TAG, "Creating " + mIntent + " " + mUser); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java index f84c5d0bd717..6f0bed2f5445 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java +++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServices.java @@ -263,6 +263,16 @@ public class TileServices extends IQSService.Stub { } @Override + public Tile getTile(ComponentName componentName) { + verifyCaller(componentName.getPackageName()); + CustomTile customTile = getTileForComponent(componentName); + if (customTile != null) { + return customTile.getQsTile(); + } + return null; + } + + @Override public void startUnlockAndRun(Tile tile) { ComponentName componentName = tile.getComponentName(); verifyCaller(componentName.getPackageName()); diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java index 1a944ce71796..94231c6403b0 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java @@ -29,6 +29,7 @@ import android.app.ActivityOptions; import android.app.AppGlobals; import android.app.IActivityManager; import android.app.ITaskStackListener; +import android.app.UiModeManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; @@ -38,6 +39,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -83,6 +85,7 @@ import com.android.systemui.recents.model.ThumbnailData; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Random; @@ -234,6 +237,13 @@ public class SystemServicesProxy { mDummyIcon = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); mDummyIcon.eraseColor(0xFF999999); } + + UiModeManager uiModeManager = (UiModeManager) context. + getSystemService(Context.UI_MODE_SERVICE); + if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { + Collections.addAll(sRecentsBlacklist, + res.getStringArray(R.array.recents_tv_blacklist_array)); + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 7bc4100701c7..eb69f55f0cf5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -2491,7 +2491,7 @@ public abstract class BaseStatusBar extends SystemUI implements } protected boolean shouldPeek(Entry entry, StatusBarNotification sbn) { - if (isDeviceInVrMode()) { + if (!mUseHeadsUp || isDeviceInVrMode()) { return false; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ViewTransformationHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/ViewTransformationHelper.java index f75f357421f8..1ff2b1328464 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ViewTransformationHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ViewTransformationHelper.java @@ -20,6 +20,7 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.util.ArrayMap; +import android.util.ArraySet; import android.view.View; import android.view.ViewGroup; @@ -194,7 +195,7 @@ public class ViewTransformationHelper implements TransformableView { for (Integer viewType : mTransformedViews.keySet()) { TransformState ownState = getCurrentState(viewType); if (ownState != null) { - ownState.setVisible(visible); + ownState.setVisible(visible, false /* force */); ownState.recycle(); } } @@ -252,6 +253,19 @@ public class ViewTransformationHelper implements TransformableView { } } + public void resetTransformedView(View view) { + TransformState state = TransformState.createFrom(view); + state.setVisible(true /* visible */, true /* force */); + state.recycle(); + } + + /** + * @return a set of all views are being transformed. + */ + public ArraySet<View> getAllTransformingViews() { + return new ArraySet<>(mTransformedViews.values()); + } + public static abstract class CustomTransformation { /** * Transform a state to the given view diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/HeaderTransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HeaderTransformState.java index 8463e069abc1..9501f907e575 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/HeaderTransformState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/HeaderTransformState.java @@ -123,8 +123,9 @@ public class HeaderTransformState extends TransformState { } } - public void setVisible(boolean visible) { - super.setVisible(visible); + @Override + public void setVisible(boolean visible, boolean force) { + super.setVisible(visible, force); if (!(mTransformedView instanceof NotificationHeaderView)) { return; } @@ -132,11 +133,13 @@ public class HeaderTransformState extends TransformState { int childCount = header.getChildCount(); for (int i = 0; i < childCount; i++) { View headerChild = header.getChildAt(i); - if (headerChild.getVisibility() == View.GONE) { + if (!force && headerChild.getVisibility() == View.GONE) { continue; } headerChild.animate().cancel(); - headerChild.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + if (headerChild.getVisibility() != View.GONE) { + headerChild.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + } if (headerChild == mExpandButton) { headerChild.setAlpha(visible ? 1.0f : 0.0f); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java index 1bfbaa228532..7794d5ba9a0f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationHeaderViewWrapper.java @@ -22,18 +22,17 @@ import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Color; import android.graphics.ColorFilter; -import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.service.notification.StatusBarNotification; +import android.util.ArraySet; import android.view.NotificationHeaderView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.ViewInvertHelper; import com.android.systemui.statusbar.ExpandableNotificationRow; @@ -92,12 +91,25 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper { @Override public void notifyContentUpdated(StatusBarNotification notification) { super.notifyContentUpdated(notification); + + ArraySet<View> previousViews = mTransformationHelper.getAllTransformingViews(); + // Reinspect the notification. resolveHeaderViews(); updateInvertHelper(); updateTransformedTypes(); addRemainingTransformTypes(); updateCropToPaddingForImageViews(); + + // We need to reset all views that are no longer transforming in case a view was previously + // transformed, but now we decided to transform its container instead. + ArraySet<View> currentViews = mTransformationHelper.getAllTransformingViews(); + for (int i = 0; i < previousViews.size(); i++) { + View view = previousViews.valueAt(i); + if (!currentViews.contains(view)) { + mTransformationHelper.resetTransformedView(view); + } + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java index 7d3da1b67422..f0f5c8db1821 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TransformState.java @@ -301,6 +301,9 @@ public class TransformState { } public static void setClippingDeactivated(final View transformedView, boolean deactivated) { + if (!(transformedView.getParent() instanceof ViewGroup)) { + return; + } ViewGroup view = (ViewGroup) transformedView.getParent(); while (true) { ArraySet<View> clipSet = (ArraySet<View>) view.getTag(CLIP_CLIPPING_SET); @@ -456,12 +459,14 @@ public class TransformState { mTransformationEndY = UNDEFINED; } - public void setVisible(boolean visible) { - if (mTransformedView.getVisibility() == View.GONE) { + public void setVisible(boolean visible, boolean force) { + if (!force && mTransformedView.getVisibility() == View.GONE) { return; } + if (mTransformedView.getVisibility() != View.GONE) { + mTransformedView.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + } mTransformedView.animate().cancel(); - mTransformedView.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); mTransformedView.setAlpha(visible ? 1.0f : 0.0f); resetTransformedView(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index de5e06ced860..8201b06428e0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -1408,7 +1408,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (shadeEntry == null) { return; } - boolean isHeadsUped = mUseHeadsUp && shouldPeek(shadeEntry); + boolean isHeadsUped = shouldPeek(shadeEntry); if (isHeadsUped) { mHeadsUpManager.showNotification(shadeEntry); // Mark as seen immediately diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java index 904134141f94..4664851053d7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java @@ -16,12 +16,14 @@ package com.android.systemui.statusbar.policy; +import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; +import android.os.UserManager; import android.util.Log; import java.io.FileDescriptor; @@ -49,7 +51,8 @@ public class HotspotControllerImpl implements HotspotController { @Override public boolean isHotspotSupported() { return mConnectivityManager.isTetheringSupported() - && mConnectivityManager.getTetherableWifiRegexs().length != 0; + && mConnectivityManager.getTetherableWifiRegexs().length != 0 + && UserManager.get(mContext).isUserAdmin(ActivityManager.getCurrentUser()); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java index c8c7d3d4c7cb..5eaea90479ce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java @@ -152,8 +152,10 @@ public class StackScrollAlgorithm { float newYTranslation = state.yTranslation; float newHeight = state.height; float newNotificationEnd = newYTranslation + newHeight; - - if (newYTranslation < previousNotificationEnd) { + boolean isHeadsUp = (child instanceof ExpandableNotificationRow) + && ((ExpandableNotificationRow) child).isPinned(); + if (newYTranslation < previousNotificationEnd && ambientState.isShadeExpanded() + && !isHeadsUp) { // The previous view is overlapping on top, clip! float overlapAmount = previousNotificationEnd - newYTranslation; state.clipTopAmount = (int) overlapAmount; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java index 5bebbcadb3a3..659eaf7e209c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java @@ -225,16 +225,22 @@ public class StackStateAnimator { // start height animation if (heightChanging) { startHeightAnimation(child, viewState, duration, delay); + } else { + abortAnimation(child, TAG_ANIMATOR_HEIGHT); } // start shadow alpha animation if (shadowAlphaChanging) { startShadowAlphaAnimation(child, viewState, duration, delay); + } else { + abortAnimation(child, TAG_ANIMATOR_SHADOW_ALPHA); } // start top inset animation if (topInsetChanging) { startInsetAnimation(child, viewState, duration, delay); + } else { + abortAnimation(child, TAG_ANIMATOR_TOP_INSET); } // start dimmed animation @@ -286,16 +292,29 @@ public class StackStateAnimator { // start translationY animation if (yTranslationChanging) { startYTranslationAnimation(child, viewState, duration, delay); + } else { + abortAnimation(child, TAG_ANIMATOR_TRANSLATION_Y); } // start translationZ animation if (zTranslationChanging) { startZTranslationAnimation(child, viewState, duration, delay); + } else { + abortAnimation(child, TAG_ANIMATOR_TRANSLATION_Z); } // start alpha animation if (alphaChanging && child.getTranslationX() == 0) { startAlphaAnimation(child, viewState, duration, delay); + } else { + abortAnimation(child, TAG_ANIMATOR_ALPHA); + } + } + + private void abortAnimation(View child, int animatorTag) { + Animator previousAnimator = getChildTag(child, animatorTag); + if (previousAnimator != null) { + previousAnimator.cancel(); } } @@ -413,7 +432,8 @@ public class StackStateAnimator { animator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator); animator.setDuration(newDuration); - if (delay > 0 && (previousAnimator == null || !previousAnimator.isRunning())) { + if (delay > 0 && (previousAnimator == null + || previousAnimator.getAnimatedFraction() == 0)) { animator.setStartDelay(delay); } animator.addListener(getGlobalAnimationFinishedListener()); @@ -472,7 +492,8 @@ public class StackStateAnimator { animator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator); animator.setDuration(newDuration); - if (delay > 0 && (previousAnimator == null || !previousAnimator.isRunning())) { + if (delay > 0 && (previousAnimator == null + || previousAnimator.getAnimatedFraction() == 0)) { animator.setStartDelay(delay); } animator.addListener(getGlobalAnimationFinishedListener()); @@ -548,7 +569,8 @@ public class StackStateAnimator { animator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator); animator.setDuration(newDuration); - if (delay > 0 && (previousAnimator == null || !previousAnimator.isRunning())) { + if (delay > 0 && (previousAnimator == null + || previousAnimator.getAnimatedFraction() == 0)) { animator.setStartDelay(delay); } animator.addListener(getGlobalAnimationFinishedListener()); @@ -630,7 +652,8 @@ public class StackStateAnimator { }); long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator); animator.setDuration(newDuration); - if (delay > 0 && (previousAnimator == null || !previousAnimator.isRunning())) { + if (delay > 0 && (previousAnimator == null + || previousAnimator.getAnimatedFraction() == 0)) { animator.setStartDelay(delay); } animator.addListener(getGlobalAnimationFinishedListener()); @@ -674,7 +697,8 @@ public class StackStateAnimator { animator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator); animator.setDuration(newDuration); - if (delay > 0 && (previousAnimator == null || !previousAnimator.isRunning())) { + if (delay > 0 && (previousAnimator == null + || previousAnimator.getAnimatedFraction() == 0)) { animator.setStartDelay(delay); } animator.addListener(getGlobalAnimationFinishedListener()); @@ -729,7 +753,8 @@ public class StackStateAnimator { animator.setInterpolator(interpolator); long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator); animator.setDuration(newDuration); - if (delay > 0 && (previousAnimator == null || !previousAnimator.isRunning())) { + if (delay > 0 && (previousAnimator == null + || previousAnimator.getAnimatedFraction() == 0)) { animator.setStartDelay(delay); } animator.addListener(getGlobalAnimationFinishedListener()); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 130fb7cf6dbb..b12972ca51f7 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -30,8 +30,6 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED; -import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS; -import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS; import static android.net.NetworkPolicyManager.RULE_NONE; import static android.net.NetworkPolicyManager.RULE_REJECT_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_METERED; @@ -921,7 +919,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // Networks aren't blocked when ignoring blocked status if (ignoreBlocked) return false; // Networks are never blocked for system services - if (uid < Process.FIRST_APPLICATION_UID) return false; + if (isSystem(uid)) return false; final boolean networkMetered; final int uidRules; @@ -4032,12 +4030,18 @@ public class ConnectivityService extends IConnectivityManager.Stub return false; } + private boolean isSystem(int uid) { + return uid < Process.FIRST_APPLICATION_UID; + } private void enforceMeteredApnPolicy(NetworkCapabilities networkCapabilities) { + final int uid = Binder.getCallingUid(); + if (isSystem(uid)) { + return; + } // if UID is restricted, don't allow them to bring up metered APNs if (networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) == false) { final int uidRules; - final int uid = Binder.getCallingUid(); synchronized(mRulesLock) { uidRules = mUidRules.get(uid, RULE_ALLOW_ALL); } diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java index 9c75a009d7af..55464e4cb7c8 100644 --- a/services/core/java/com/android/server/MountService.java +++ b/services/core/java/com/android/server/MountService.java @@ -2030,6 +2030,9 @@ class MountService extends IMountService.Stub enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS); waitForReady(); + final VolumeInfo from; + final VolumeInfo to; + synchronized (mLock) { if (Objects.equals(mPrimaryStorageUuid, volumeUuid)) { throw new IllegalArgumentException("Primary storage already at " + volumeUuid); @@ -2049,10 +2052,11 @@ class MountService extends IMountService.Stub onMoveStatusLocked(MOVE_STATUS_COPY_FINISHED); onMoveStatusLocked(PackageManager.MOVE_SUCCEEDED); mHandler.obtainMessage(H_RESET).sendToTarget(); + return; } else { - final VolumeInfo from = findStorageForUuid(mPrimaryStorageUuid); - final VolumeInfo to = findStorageForUuid(volumeUuid); + from = findStorageForUuid(mPrimaryStorageUuid); + to = findStorageForUuid(volumeUuid); if (from == null) { Slog.w(TAG, "Failing move due to missing from volume " + mPrimaryStorageUuid); @@ -2063,14 +2067,14 @@ class MountService extends IMountService.Stub onMoveStatusLocked(PackageManager.MOVE_FAILED_INTERNAL_ERROR); return; } - - try { - mConnector.execute("volume", "move_storage", from.id, to.id); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); - } } } + + try { + mConnector.execute("volume", "move_storage", from.id, to.id); + } catch (NativeDaemonConnectorException e) { + throw e.rethrowAsParcelableException(); + } } @Override diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index be5eda351c24..d1ee634cb95f 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -273,6 +273,10 @@ import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.res.Configuration.UI_MODE_TYPE_TELEVISION; +import static android.os.Process.PROC_CHAR; +import static android.os.Process.PROC_OUT_LONG; +import static android.os.Process.PROC_PARENS; +import static android.os.Process.PROC_SPACE_TERM; import static android.provider.Settings.Global.ALWAYS_FINISH_ACTIVITIES; import static android.provider.Settings.Global.DEBUG_APP; import static android.provider.Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT; @@ -6412,7 +6416,7 @@ public final class ActivityManagerService extends ActivityManagerNative EventLog.writeEvent(EventLogTags.AM_PROC_BOUND, app.userId, app.pid, app.processName); app.makeActive(thread, mProcessStats); - app.curAdj = app.setAdj = ProcessList.INVALID_ADJ; + app.curAdj = app.setAdj = app.verifiedAdj = ProcessList.INVALID_ADJ; app.curSchedGroup = app.setSchedGroup = ProcessList.SCHED_GROUP_DEFAULT; app.forcingToForeground = null; updateProcessForegroundLocked(app, false, false); @@ -10514,6 +10518,30 @@ public final class ActivityManagerService extends ActivityManagerNative } } + private static final int[] PROCESS_STATE_STATS_FORMAT = new int[] { + PROC_SPACE_TERM, + PROC_SPACE_TERM|PROC_PARENS, + PROC_SPACE_TERM|PROC_CHAR|PROC_OUT_LONG, // 3: process state + }; + + private final long[] mProcessStateStatsLongs = new long[1]; + + boolean isProcessAliveLocked(ProcessRecord proc) { + if (proc.procStatFile == null) { + proc.procStatFile = "/proc/" + proc.pid + "/stat"; + } + mProcessStateStatsLongs[0] = 0; + if (!Process.readProcFile(proc.procStatFile, PROCESS_STATE_STATS_FORMAT, null, + mProcessStateStatsLongs, null)) { + if (DEBUG_OOM_ADJ) Slog.d(TAG, "UNABLE TO RETRIEVE STATE FOR " + proc.procStatFile); + return false; + } + final long state = mProcessStateStatsLongs[0]; + if (DEBUG_OOM_ADJ) Slog.d(TAG, "RETRIEVED STATE FOR " + proc.procStatFile + ": " + + (char)state); + return state != 'Z' && state != 'X' && state != 'x' && state != 'K'; + } + private ContentProviderHolder getContentProviderImpl(IApplicationThread caller, String name, IBinder token, boolean stable, int userId) { ContentProviderRecord cpr; @@ -10601,7 +10629,16 @@ public final class ActivityManagerService extends ActivityManagerNative } checkTime(startTime, "getContentProviderImpl: before updateOomAdj"); + final int verifiedAdj = cpr.proc.verifiedAdj; boolean success = updateOomAdjLocked(cpr.proc); + // XXX things have changed so updateOomAdjLocked doesn't actually tell us + // if the process has been successfully adjusted. So to reduce races with + // it, we will check whether the process still exists. Note that this doesn't + // completely get rid of races with LMK killing the process, but should make + // them much smaller. + if (success && verifiedAdj != cpr.proc.setAdj && !isProcessAliveLocked(cpr.proc)) { + success = false; + } maybeUpdateProviderUsageStatsLocked(r, cpr.info.packageName, name); checkTime(startTime, "getContentProviderImpl: after updateOomAdj"); if (DEBUG_PROVIDER) Slog.i(TAG_PROVIDER, "Adjust success: " + success); @@ -10627,6 +10664,8 @@ public final class ActivityManagerService extends ActivityManagerNative } providerRunning = false; conn = null; + } else { + cpr.proc.verifiedAdj = cpr.proc.setAdj; } Binder.restoreCallingIdentity(origId); @@ -19248,6 +19287,7 @@ public final class ActivityManagerService extends ActivityManagerNative } boolean mayBeTop = false; + app.whitelistManager = false; for (int is = app.services.size()-1; is >= 0 && (adj > ProcessList.FOREGROUND_APP_ADJ @@ -19288,8 +19328,6 @@ public final class ActivityManagerService extends ActivityManagerNative } } - app.whitelistManager = false; - for (int conni = s.connections.size()-1; conni >= 0 && (adj > ProcessList.FOREGROUND_APP_ADJ || schedGroup == ProcessList.SCHED_GROUP_BACKGROUND @@ -20061,6 +20099,7 @@ public final class ActivityManagerService extends ActivityManagerNative "Set " + app.pid + " " + app.processName + " adj " + app.curAdj + ": " + app.adjType); app.setAdj = app.curAdj; + app.verifiedAdj = ProcessList.INVALID_ADJ; } if (app.setSchedGroup != app.curSchedGroup) { diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 6510cb4928d5..50b6c0c7502f 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -1157,13 +1157,6 @@ final class ActivityRecord { public void reportFullyDrawnLocked() { final long curTime = SystemClock.uptimeMillis(); - // Normally launch time counts from the point when the activity is resumed, to when the - // first window is drawn. However the activity could become visible before it is resumed, - // due to some other activity in the same task being launched. In this case we still need - // to report launch time to unblock ActivityStarter.startActivityMayWait(). - if (displayStartTime == 0 && task != null && task.isLaunching) { - displayStartTime = curTime; - } if (displayStartTime != 0) { reportLaunchTimeLocked(curTime); } @@ -1229,22 +1222,13 @@ final class ActivityRecord { //service.mUsageStatsService.noteLaunchTime(realActivity, (int)totalTime); } displayStartTime = 0; - task.isLaunching = false; stack.mLaunchStartTime = 0; } void windowsDrawnLocked() { mStackSupervisor.mActivityMetricsLogger.notifyWindowsDrawn(); - final long curTime = SystemClock.uptimeMillis(); - // Normally launch time counts from the point when the activity is resumed, to when the - // first window is drawn. However the activity could become visible before it is resumed, - // due to some other activity in the same task being launched. In this case we still need - // to report launch time to unblock ActivityStarter.startActivityMayWait(). - if (displayStartTime == 0 && task != null && task.isLaunching) { - displayStartTime = curTime; - } if (displayStartTime != 0) { - reportLaunchTimeLocked(curTime); + reportLaunchTimeLocked(SystemClock.uptimeMillis()); } mStackSupervisor.sendWaitingVisibleReportLocked(this); startTime = 0; diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 36238c824405..a5c34e208583 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -825,7 +825,8 @@ final class ActivityStack { * is the same as the given activity. Returns null if no such activity * is found. */ - ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) { + ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, + boolean compareIntentFilters) { ComponentName cls = intent.getComponent(); if (info.targetActivity != null) { cls = new ComponentName(info.packageName, info.targetActivity); @@ -843,8 +844,16 @@ final class ActivityStack { if (notCurrentUserTask && (r.info.flags & FLAG_SHOW_FOR_ALL_USERS) == 0) { continue; } - if (!r.finishing && r.intent.getComponent().equals(cls) && r.userId == userId) { - return r; + if (!r.finishing && r.userId == userId) { + if (compareIntentFilters) { + if (r.intent.filterEquals(intent)) { + return r; + } + } else { + if (r.intent.getComponent().equals(cls)) { + return r; + } + } } } } @@ -924,9 +933,6 @@ final class ActivityStack { void setLaunchTime(ActivityRecord r) { if (r.displayStartTime == 0) { r.fullyDrawnStartTime = r.displayStartTime = SystemClock.uptimeMillis(); - if (r.task != null) { - r.task.isLaunching = true; - } if (mLaunchStartTime == 0) { startLaunchTraces(r.packageName); mLaunchStartTime = mFullyDrawnStartTime = r.displayStartTime; @@ -941,9 +947,6 @@ final class ActivityStack { // Make sure that there is no activity waiting for this to launch. if (mStackSupervisor.mWaitingActivityLaunched.isEmpty()) { r.displayStartTime = r.fullyDrawnStartTime = 0; - if (r.task != null) { - r.task.isLaunching = false; - } } else { mStackSupervisor.removeTimeoutsForActivityLocked(r); mStackSupervisor.scheduleIdleTimeoutLocked(r); @@ -1398,6 +1401,7 @@ final class ActivityStack { if (next.nowVisible) { // We won't get a call to reportActivityVisibleLocked() so dismiss lockscreen now. + mStackSupervisor.reportActivityVisibleLocked(next); mStackSupervisor.notifyActivityDrawnForKeyguard(); } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 738622fd923b..36207c48794f 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -111,6 +111,7 @@ import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED; import static android.app.ActivityManager.RESIZE_MODE_FORCED; import static android.app.ActivityManager.RESIZE_MODE_SYSTEM; +import static android.app.ActivityManager.START_TASK_TO_FRONT; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.FIRST_DYNAMIC_STACK_ID; import static android.app.ActivityManager.StackId.FIRST_STATIC_STACK_ID; @@ -1002,6 +1003,24 @@ public final class ActivityStackSupervisor implements DisplayListener { } } + void reportTaskToFrontNoLaunch(ActivityRecord r) { + boolean changed = false; + for (int i = mWaitingActivityLaunched.size() - 1; i >= 0; i--) { + WaitResult w = mWaitingActivityLaunched.remove(i); + if (w.who == null) { + changed = true; + // Set result to START_TASK_TO_FRONT so that startActivityMayWait() knows that + // the starting activity ends up moving another activity to front, and it should + // wait for this new activity to become visible instead. + // Do not modify other fields. + w.result = START_TASK_TO_FRONT; + } + } + if (changed) { + mService.notifyAll(); + } + } + void reportActivityLaunchedLocked(boolean timeout, ActivityRecord r, long thisTime, long totalTime) { boolean changed = false; @@ -1015,6 +1034,7 @@ public final class ActivityStackSupervisor implements DisplayListener { } w.thisTime = thisTime; w.totalTime = totalTime; + // Do not modify w.result. } } if (changed) { @@ -2619,11 +2639,13 @@ public final class ActivityStackSupervisor implements DisplayListener { return mTmpFindTaskResult.r; } - ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) { + ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, + boolean compareIntentFilters) { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { - final ActivityRecord ar = stacks.get(stackNdx).findActivityLocked(intent, info); + final ActivityRecord ar = stacks.get(stackNdx) + .findActivityLocked(intent, info, compareIntentFilters); if (ar != null) { return ar; } @@ -3023,8 +3045,9 @@ public final class ActivityStackSupervisor implements DisplayListener { /** Checks whether the activity should be shown for current user. */ boolean okToShowLocked(ActivityRecord r) { - return r != null && (isCurrentProfileLocked(r.userId) - || (r.info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0); + return r != null && ((r.info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0 + || (isCurrentProfileLocked(r.userId) + && !mService.mUserController.isUserStoppingOrShuttingDownLocked(r.userId))); } final ArrayList<ActivityRecord> processStoppingActivitiesLocked(boolean remove) { diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index e42548488ebe..234a46735865 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -553,6 +553,13 @@ class ActivityStarter { return; } + // We're waiting for an activity launch to finish, but that activity simply + // brought another activity to front. Let startActivityMayWait() know about + // this, so it waits for the new activity to become visible instead. + if (result == START_TASK_TO_FRONT && !mSupervisor.mWaitingActivityLaunched.isEmpty()) { + mSupervisor.reportTaskToFrontNoLaunch(mStartActivity); + } + int startedActivityStackId = INVALID_STACK_ID; if (r.task != null && r.task.stack != null) { startedActivityStackId = r.task.stack.mStackId; @@ -840,8 +847,13 @@ class ActivityStarter { mService.wait(); } catch (InterruptedException e) { } - } while (!outResult.timeout && outResult.who == null); - } else if (res == START_TASK_TO_FRONT) { + } while (outResult.result != START_TASK_TO_FRONT + && !outResult.timeout && outResult.who == null); + if (outResult.result == START_TASK_TO_FRONT) { + res = START_TASK_TO_FRONT; + } + } + if (res == START_TASK_TO_FRONT) { ActivityRecord r = stack.topRunningActivityLocked(); if (r.nowVisible && r.state == RESUMED) { outResult.timeout = false; @@ -1409,11 +1421,11 @@ class ActivityStarter { if (mLaunchSingleInstance) { // There can be one and only one instance of single instance activity in the // history, and it is always in its own unique task, so we do a special search. - intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info); + intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, false); } else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) { // For the launch adjacent case we only want to put the activity in an existing // task if the activity already exists in the history. - intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info); + intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, true); } else { // Otherwise find the best task to put the activity in. intentActivity = mSupervisor.findTaskLocked(mStartActivity); diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java index 691fd2abe0b3..8911a3e94979 100644 --- a/services/core/java/com/android/server/am/ProcessRecord.java +++ b/services/core/java/com/android/server/am/ProcessRecord.java @@ -75,6 +75,7 @@ final class ProcessRecord { ProcessState baseProcessTracker; BatteryStatsImpl.Uid.Proc curProcBatteryStats; int pid; // The process of this application; 0 if none + String procStatFile; // path to /proc/<pid>/stat int[] gids; // The gids this process was launched with String requiredAbi; // The ABI this process was launched with String instructionSet; // The instruction set this process was launched with @@ -93,6 +94,7 @@ final class ProcessRecord { int setRawAdj; // Last set OOM unlimited adjustment for this process int curAdj; // Current OOM adjustment for this process int setAdj; // Last set OOM adjustment for this process + int verifiedAdj; // The last adjustment that was verified as actually being set int curSchedGroup; // Currently desired scheduling class int setSchedGroup; // Last set to background scheduling class int trimMemoryLevel; // Last selected memory trimming level @@ -441,7 +443,7 @@ final class ProcessRecord { pkgList.put(_info.packageName, new ProcessStats.ProcessStateHolder(_info.versionCode)); maxAdj = ProcessList.UNKNOWN_ADJ; curRawAdj = setRawAdj = ProcessList.INVALID_ADJ; - curAdj = setAdj = ProcessList.INVALID_ADJ; + curAdj = setAdj = verifiedAdj = ProcessList.INVALID_ADJ; persistent = false; removed = false; lastStateTime = lastPssTime = nextPssTime = SystemClock.uptimeMillis(); @@ -449,6 +451,7 @@ final class ProcessRecord { public void setPid(int _pid) { pid = _pid; + procStatFile = null; shortStringName = null; stringName = null; } diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index c84aaacd8aff..3f6db990a5b5 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -154,7 +154,6 @@ final class TaskRecord { long lastActiveTime; // Last time this task was active, including sleep. boolean inRecents; // Actually in the recents list? boolean isAvailable; // Is the activity available to be launched? - boolean isLaunching; // Is an activity in this task launching? boolean rootWasReset; // True if the intent at the root of the task had // the FLAG_ACTIVITY_RESET_TASK_IF_NEEDED flag. boolean autoRemoveRecents; // If true, we should automatically remove the task from diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 4380af335581..b685dd3f6771 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -1335,6 +1335,15 @@ final class UserController { return mStartedUserArray; } + boolean isUserStoppingOrShuttingDownLocked(int userId) { + UserState state = getStartedUserStateLocked(userId); + if (state == null) { + return false; + } + return state.state == UserState.STATE_STOPPING + || state.state == UserState.STATE_SHUTDOWN; + } + boolean isUserRunningLocked(int userId, int flags) { UserState state = getStartedUserStateLocked(userId); if (state == null) { diff --git a/services/core/java/com/android/server/job/controllers/ContentObserverController.java b/services/core/java/com/android/server/job/controllers/ContentObserverController.java index 26660e82e841..9dce070221bc 100644 --- a/services/core/java/com/android/server/job/controllers/ContentObserverController.java +++ b/services/core/java/com/android/server/job/controllers/ContentObserverController.java @@ -57,7 +57,7 @@ public class ContentObserverController extends StateController { private static volatile ContentObserverController sController; final private List<JobStatus> mTrackedTasks = new ArrayList<JobStatus>(); - ArrayMap<Uri, ObserverInstance> mObservers = new ArrayMap<>(); + ArrayMap<JobInfo.TriggerContentUri, ObserverInstance> mObservers = new ArrayMap<>(); final Handler mHandler; public static ContentObserverController get(JobSchedulerService taskManagerService) { @@ -253,10 +253,10 @@ public class ContentObserverController extends StateController { final JobInfo.TriggerContentUri[] uris = jobStatus.getJob().getTriggerContentUris(); if (uris != null) { for (JobInfo.TriggerContentUri uri : uris) { - ObserverInstance obs = mObservers.get(uri.getUri()); + ObserverInstance obs = mObservers.get(uri); if (obs == null) { obs = new ObserverInstance(mHandler, uri.getUri()); - mObservers.put(uri.getUri(), obs); + mObservers.put(uri, obs); mContext.getContentResolver().registerContentObserver( uri.getUri(), (uri.getFlags() & @@ -316,7 +316,7 @@ public class ContentObserverController extends StateController { obs.mJobs.remove(this); if (obs.mJobs.size() == 0) { mContext.getContentResolver().unregisterContentObserver(obs); - mObservers.remove(obs.mUri); + mObservers.remove(obs); } } } @@ -355,7 +355,10 @@ public class ContentObserverController extends StateController { continue; } pw.print(" "); - pw.print(mObservers.keyAt(i)); + JobInfo.TriggerContentUri trigger = mObservers.keyAt(i); + pw.print(trigger.getUri()); + pw.print(" 0x"); + pw.print(Integer.toHexString(trigger.getFlags())); pw.print(" ("); pw.print(System.identityHashCode(obs)); pw.println("):"); diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 6b916be9d0fe..173f76fa52f5 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -899,6 +899,7 @@ public class GnssLocationProvider implements LocationProviderInterface { // hold wake lock while task runs mWakeLock.acquire(); + Log.i(TAG, "WakeLock acquired by handleInjectNtpTime()"); AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() { @Override public void run() { @@ -951,6 +952,7 @@ public class GnssLocationProvider implements LocationProviderInterface { // release wake lock held by task mWakeLock.release(); + Log.i(TAG, "WakeLock released by handleInjectNtpTime()"); } }); } @@ -969,6 +971,7 @@ public class GnssLocationProvider implements LocationProviderInterface { // hold wake lock while task runs mWakeLock.acquire(); + Log.i(TAG, "WakeLock acquired by handleDownloadXtraData()"); AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() { @Override public void run() { @@ -991,6 +994,7 @@ public class GnssLocationProvider implements LocationProviderInterface { // release wake lock held by task mWakeLock.release(); + Log.i(TAG, "WakeLock released by handleDownloadXtraData()"); } }); } @@ -1192,7 +1196,7 @@ public class GnssLocationProvider implements LocationProviderInterface { } if (DEBUG) Log.d(TAG, "setRequest " + mProviderRequest); - if (mProviderRequest.reportLocation && !mDisableGps) { + if (mProviderRequest.reportLocation && !mDisableGps && isEnabled()) { // update client uids updateClientUids(mWorkSource); @@ -2040,6 +2044,7 @@ public class GnssLocationProvider implements LocationProviderInterface { // note that this assumes the message will not be removed from the queue before // it is handled (otherwise the wake lock would be leaked). mWakeLock.acquire(); + Log.i(TAG, "WakeLock acquired by sendMessage(" + message + ", " + arg + ", " + obj + ")"); mHandler.obtainMessage(message, arg, 1, obj).sendToTarget(); } @@ -2099,6 +2104,8 @@ public class GnssLocationProvider implements LocationProviderInterface { if (msg.arg2 == 1) { // wakelock was taken for this message, release it mWakeLock.release(); + Log.i(TAG, "WakeLock released by handleMessage(" + message + ", " + msg.arg1 + ", " + + msg.obj + ")"); } } diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 67cd7c32483b..228c015b30e8 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -1989,6 +1989,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } private void setRestrictBackgroundLocked(boolean restrictBackground) { + Slog.d(TAG, "setRestrictBackgroundLocked(): " + restrictBackground); final boolean oldRestrictBackground = mRestrictBackground; mRestrictBackground = restrictBackground; // Must whitelist foreground apps before turning data saver mode on. diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 662516e6b60e..73850de8681e 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -67,7 +67,6 @@ import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; -import android.content.IIntentSender; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; @@ -2805,7 +2804,7 @@ public class NotificationManagerService extends SystemService { // notification was a summary and its group key changed. if (oldIsSummary && (!isSummary || !oldGroup.equals(group))) { cancelGroupChildrenLocked(old, callingUid, callingPid, null, - REASON_GROUP_SUMMARY_CANCELED); + REASON_GROUP_SUMMARY_CANCELED, false /* sendDelete */); } } @@ -3438,7 +3437,7 @@ public class NotificationManagerService extends SystemService { cancelNotificationLocked(r, sendDelete, reason); cancelGroupChildrenLocked(r, callingUid, callingPid, listenerName, - REASON_GROUP_SUMMARY_CANCELED); + REASON_GROUP_SUMMARY_CANCELED, sendDelete); updateLightsLocked(); } } @@ -3517,7 +3516,7 @@ public class NotificationManagerService extends SystemService { final int M = canceledNotifications.size(); for (int i = 0; i < M; i++) { cancelGroupChildrenLocked(canceledNotifications.get(i), callingUid, callingPid, - listenerName, REASON_GROUP_SUMMARY_CANCELED); + listenerName, REASON_GROUP_SUMMARY_CANCELED, false /* sendDelete */); } } if (canceledNotifications != null) { @@ -3561,14 +3560,14 @@ public class NotificationManagerService extends SystemService { int M = canceledNotifications != null ? canceledNotifications.size() : 0; for (int i = 0; i < M; i++) { cancelGroupChildrenLocked(canceledNotifications.get(i), callingUid, callingPid, - listenerName, REASON_GROUP_SUMMARY_CANCELED); + listenerName, REASON_GROUP_SUMMARY_CANCELED, false /* sendDelete */); } updateLightsLocked(); } // Warning: The caller is responsible for invoking updateLightsLocked(). private void cancelGroupChildrenLocked(NotificationRecord r, int callingUid, int callingPid, - String listenerName, int reason) { + String listenerName, int reason, boolean sendDelete) { Notification n = r.getNotification(); if (!n.isGroupSummary()) { return; @@ -3591,7 +3590,7 @@ public class NotificationManagerService extends SystemService { EventLogTags.writeNotificationCancel(callingUid, callingPid, pkg, childSbn.getId(), childSbn.getTag(), userId, 0, 0, reason, listenerName); mNotificationList.remove(i); - cancelNotificationLocked(childR, false, reason); + cancelNotificationLocked(childR, sendDelete, reason); } } } @@ -3899,7 +3898,9 @@ public class NotificationManagerService extends SystemService { @Override public void onUserSwitched(int user) { synchronized (mNotificationList) { - for (ManagedServiceInfo info : mServices) { + int i = mServices.size()-1; + while (i --> 0) { + final ManagedServiceInfo info = mServices.get(i); unregisterService(info.service, info.userid); } } diff --git a/services/core/java/com/android/server/notification/NotificationUsageStats.java b/services/core/java/com/android/server/notification/NotificationUsageStats.java index 07142f07d31b..34c52833fbfd 100644 --- a/services/core/java/com/android/server/notification/NotificationUsageStats.java +++ b/services/core/java/com/android/server/notification/NotificationUsageStats.java @@ -146,7 +146,8 @@ public class NotificationUsageStats { /** * Called when a notification has been updated. */ - public void registerUpdatedByApp(NotificationRecord notification, NotificationRecord old) { + public synchronized void registerUpdatedByApp(NotificationRecord notification, + NotificationRecord old) { notification.stats.updateFrom(old.stats); AggregatedStats[] aggregatedStatsArray = getAggregatedStatsLocked(notification); for (AggregatedStats stats : aggregatedStatsArray) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 12917b4a032a..96513b98f02e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2448,14 +2448,8 @@ public class PackageManagerService extends IPackageManager.Stub { | PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0); - // Collected privileged vendor packages. - final File privilegedVendorAppDir = new File(Environment.getVendorDirectory(), "priv-app"); - scanDirLI(privilegedVendorAppDir, PackageParser.PARSE_IS_SYSTEM - | PackageParser.PARSE_IS_SYSTEM_DIR - | PackageParser.PARSE_IS_PRIVILEGED, scanFlags, 0); - // Collect all vendor packages. - File vendorAppDir = new File(Environment.getVendorDirectory(), "app"); + File vendorAppDir = new File("/vendor/app"); try { vendorAppDir = vendorAppDir.getCanonicalFile(); } catch (IOException e) { @@ -12532,13 +12526,12 @@ public class PackageManagerService extends IPackageManager.Stub { } if (mSuccess) { - final boolean mounted; - if (Environment.isExternalStorageEmulated()) { - mounted = true; - } else { + boolean mounted = false; + try { final String status = Environment.getExternalStorageState(); mounted = (Environment.MEDIA_MOUNTED.equals(status) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(status)); + } catch (Exception e) { } if (mounted) { @@ -15819,10 +15812,7 @@ public class PackageManagerService extends IPackageManager.Stub { try { final String privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app") .getCanonicalPath(); - final String privilegedAppVendorDir = new File(Environment.getVendorDirectory(), "priv-app") - .getCanonicalPath(); - return (path.getCanonicalPath().startsWith(privilegedAppDir) - || path.getCanonicalPath().startsWith(privilegedAppVendorDir)); + return path.getCanonicalPath().startsWith(privilegedAppDir); } catch (IOException e) { Slog.e(TAG, "Unable to access code path " + path); } diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 4c515f0fc87e..d8a1c779f77e 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -732,9 +732,9 @@ public class UserManagerService extends IUserManager.Stub { long identity = Binder.clearCallingIdentity(); try { if (enableQuietMode) { + ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null); LocalServices.getService(ActivityManagerInternal.class) .killForegroundAppsForUser(userHandle); - ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null); } else { ActivityManagerNative.getDefault().startUserInBackground(userHandle); } diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index 4148cd07681f..359063c80dbf 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -731,9 +731,7 @@ class WindowSurfacePlacer { } try { - if (task == null || task.mStack.getBoundsAnimating()) { - w.mClient.moved(left, top); - } + w.mClient.moved(left, top); } catch (RemoteException e) { } w.mMovedByResize = false; diff --git a/test-runner/src/android/test/mock/MockContext.java b/test-runner/src/android/test/mock/MockContext.java index b14fc41632b3..9471326627a5 100644 --- a/test-runner/src/android/test/mock/MockContext.java +++ b/test-runner/src/android/test/mock/MockContext.java @@ -702,6 +702,12 @@ public class MockContext extends Context { throw new UnsupportedOperationException(); } + /** @hide */ + @Override + public Display getDisplay() { + throw new UnsupportedOperationException(); + } + @Override public File[] getExternalFilesDirs(String type) { throw new UnsupportedOperationException(); diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index f87269b7c9f7..616cb5761402 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -1799,6 +1799,12 @@ public final class BridgeContext extends Context { } @Override + public Display getDisplay() { + // pass + return null; + } + + @Override public int getUserId() { return 0; // not used } |