icon cache using db instead of using module jar
authorVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Sat, 8 Aug 2020 07:37:27 +0000 (09:37 +0200)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Mon, 21 Sep 2020 13:40:50 +0000 (13:40 +0000)
GitOrigin-RevId: 98995cafb9f72017dd71715052c685ba70c01646

android/src/com/android/tools/idea/ui/resourcemanager/plugin/SVGAssetRenderer.kt
android/testSrc/com/android/tools/idea/avdmanager/ConfigureAvdOptionsStepTest.java
android/testSrc/com/android/tools/idea/avdmanager/SystemImagePreviewTest.java
designer/resources/icon-robots.txt [new file with mode: 0644]

index 920482ce34885b5eb3182cf4bb60386eebbcf987..b4dec15089529b4b7b864f9ac3a6d804be4793c1 100644 (file)
@@ -18,10 +18,8 @@ package com.android.tools.idea.ui.resourcemanager.plugin
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.module.Module
 import com.intellij.openapi.vfs.VirtualFile
-import com.intellij.util.ui.UIUtil
-import org.apache.batik.anim.dom.SAXSVGDocumentFactory
-import com.intellij.ui.svg.SaxSvgDocumentFactory
 import com.intellij.util.ui.ImageUtil
+import org.apache.batik.anim.dom.SAXSVGDocumentFactory
 import org.apache.batik.transcoder.TranscoderException
 import org.apache.batik.transcoder.TranscoderInput
 import org.apache.batik.transcoder.TranscoderOutput
@@ -58,38 +56,37 @@ class SVGAssetRenderer : DesignAssetRenderer {
       "${file.path} content is not supported by the SVG Loader\n ${ex.localizedMessage}"
     )
   }
+}
 
-  private class SVGLoader(
-    inputStream: InputStream,
-    private val width: Int,
-    private val height: Int
-  ) {
+private class SVGLoader(
+  inputStream: InputStream,
+  private val width: Int,
+  private val height: Int
+) {
+  private var img: BufferedImage? = null
+  private val transcoderInput = TranscoderInput(
+    SAXSVGDocumentFactory(
+      XMLResourceDescriptor.getXMLParserClassName()
+    ).createDocument(null, inputStream)
+  )
 
-    private var img: BufferedImage? = null
-    private val transcoderInput = TranscoderInput(
-      SAXSVGDocumentFactory(
-        XMLResourceDescriptor.getXMLParserClassName()
-      ).createDocument(null, inputStream)
-    )
-
-    private inner class MyTranscoder : ImageTranscoder() {
-      override fun createImage(w: Int, h: Int): BufferedImage {
-        return ImageUtil.createImage(w, h, BufferedImage.TYPE_INT_ARGB)
-      }
-
-      @Throws(TranscoderException::class)
-      override fun writeImage(img: BufferedImage, output: TranscoderOutput?) {
-        this@SVGLoader.img = img
-      }
+  private inner class MyTranscoder : ImageTranscoder() {
+    override fun createImage(w: Int, h: Int): BufferedImage {
+      return ImageUtil.createImage(w, h, BufferedImage.TYPE_INT_ARGB)
     }
 
     @Throws(TranscoderException::class)
-    internal fun createImage(): BufferedImage? {
-      val transcoder = MyTranscoder()
-      transcoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, width.toFloat())
-      transcoder.addTranscodingHint(ImageTranscoder.KEY_HEIGHT, height.toFloat())
-      transcoder.transcode(transcoderInput, null)
-      return img
+    override fun writeImage(img: BufferedImage, output: TranscoderOutput?) {
+      this@SVGLoader.img = img
     }
   }
+
+  @Throws(TranscoderException::class)
+  fun createImage(): BufferedImage? {
+    val transcoder = MyTranscoder()
+    transcoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, width.toFloat())
+    transcoder.addTranscodingHint(ImageTranscoder.KEY_HEIGHT, height.toFloat())
+    transcoder.transcode(transcoderInput, null)
+    return img
+  }
 }
\ No newline at end of file
index def20b074cbed057ddfec0c34f798f6322a0e0bf..6119f00c3289d1c37612b7e134f1d875023b1b6e 100644 (file)
 
 package com.android.tools.idea.avdmanager;
 
+import static com.android.sdklib.internal.avd.GpuMode.OFF;
+import static com.android.sdklib.internal.avd.GpuMode.SWIFT;
+import static com.android.sdklib.repository.targets.SystemImage.DEFAULT_TAG;
+import static com.android.sdklib.repository.targets.SystemImage.GOOGLE_APIS_TAG;
+import static com.android.sdklib.repository.targets.SystemImage.GOOGLE_APIS_X86_TAG;
+import static com.android.sdklib.repository.targets.SystemImage.TV_TAG;
+import static com.android.sdklib.repository.targets.SystemImage.WEAR_TAG;
+import static com.android.tools.idea.avdmanager.ConfigureAvdOptionsStep.gpuOtherMode;
+import static com.android.tools.idea.avdmanager.ConfigureAvdOptionsStep.isGoogleApiTag;
+import static com.google.common.truth.Truth.assertThat;
+
 import com.android.emulator.SnapshotOuterClass;
 import com.android.repository.api.RepoManager;
 import com.android.repository.impl.meta.RepositoryPackages;
@@ -38,22 +49,14 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Maps;
 import com.intellij.openapi.util.Disposer;
 import com.intellij.ui.components.JBLabel;
-import org.jetbrains.android.AndroidTestCase;
-import org.junit.rules.TemporaryFolder;
-
-import javax.swing.*;
-
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.util.List;
 import java.util.Map;
-
-import static com.android.sdklib.internal.avd.GpuMode.*;
-import static com.android.sdklib.repository.targets.SystemImage.*;
-import static com.android.tools.idea.avdmanager.ConfigureAvdOptionsStep.gpuOtherMode;
-import static com.android.tools.idea.avdmanager.ConfigureAvdOptionsStep.isGoogleApiTag;
-import static com.google.common.truth.Truth.assertThat;
+import javax.swing.*;
+import org.jetbrains.android.AndroidTestCase;
+import org.junit.rules.TemporaryFolder;
 
 public class ConfigureAvdOptionsStepTest extends AndroidTestCase {
 
@@ -247,7 +250,7 @@ public class ConfigureAvdOptionsStepTest extends AndroidTestCase {
     Icon icon = optionsStep.getSystemImageIcon();
     assertNotNull(icon);
     String iconUrl = icon.toString();
-    assertTrue("Wrong icon fetched for non-preview API: " + iconUrl, iconUrl.endsWith("Marshmallow_32.png"));
+    assertTrue("Wrong icon fetched for non-preview API: " + iconUrl, iconUrl.contains("Marshmallow_32.png"));
 
     optionsModel = new AvdOptionsModel(myPreviewAvdInfo);
 
@@ -259,7 +262,7 @@ public class ConfigureAvdOptionsStepTest extends AndroidTestCase {
     iconUrl = icon.toString();
     // For an actual Preview, the URL will be Default_32.png, but
     // we now know that N-Preview became Nougat.
-    assertTrue("Wrong icon fetched for Preview API: " + iconUrl, iconUrl.endsWith("Nougat_32.png"));
+    assertTrue("Wrong icon fetched for Preview API: " + iconUrl, iconUrl.contains("Nougat_32.png"));
 
     optionsModel = new AvdOptionsModel(myZuluAvdInfo);
 
@@ -269,7 +272,7 @@ public class ConfigureAvdOptionsStepTest extends AndroidTestCase {
     icon = optionsStep.getSystemImageIcon();
     assertNotNull(icon);
     iconUrl = icon.toString();
-    assertTrue("Wrong icon fetched for unknown API: " + iconUrl, iconUrl.endsWith("Default_32.png"));
+    assertTrue("Wrong icon fetched for unknown API: " + iconUrl, iconUrl.contains("Default_32.png"));
   }
 
   public void testPopulateSnapshotList() throws Exception {
index 21b55b4d5d51b52d649a0cd984fb8119ee563abe..e21125c1336f501eb2342df15016b94637f16b6a 100644 (file)
@@ -30,10 +30,8 @@ import com.android.sdklib.repository.meta.DetailsTypes;
 import com.android.sdklib.repository.targets.SystemImageManager;
 import com.google.common.collect.ImmutableList;
 import java.io.File;
-
-import org.jetbrains.android.AndroidTestCase;
-
 import javax.swing.*;
+import org.jetbrains.android.AndroidTestCase;
 
 /**
  * Tests for {@link SystemImagePreview}
@@ -105,7 +103,7 @@ public class SystemImagePreviewTest extends AndroidTestCase {
     JLabel iconLabel = imagePreview.getReleaseIcon();
     assertTrue("No icon fetched for non-preview API", iconLabel != null && iconLabel.getIcon() != null);
     String iconUrl = iconLabel.getIcon().toString();
-    assertTrue("Wrong icon fetched for non-preview API", iconUrl.endsWith("Marshmallow.png"));
+    assertTrue("Wrong icon fetched for non-preview API (iconUrl="+iconUrl+")", iconUrl.contains("Marshmallow.png"));
 
     imagePreview.setImage(mNPreviewImageDescr);
     iconLabel = imagePreview.getReleaseIcon();
@@ -113,6 +111,6 @@ public class SystemImagePreviewTest extends AndroidTestCase {
     iconUrl = iconLabel.getIcon().toString();
     // For an actual Preview, the URL will be Default.png, but
     // we now know that N-Preview became Nougat.
-    assertTrue("Wrong icon fetched for Preview API", iconUrl.endsWith("Nougat.png"));
+    assertTrue("Wrong icon fetched for Preview API", iconUrl.contains("Nougat.png"));
   }
 }
diff --git a/designer/resources/icon-robots.txt b/designer/resources/icon-robots.txt
new file mode 100644 (file)
index 0000000..61fbe86
--- /dev/null
@@ -0,0 +1,2 @@
+skip: constraintlayout
+skip: motionlayout