SkQP: bring release.sh script into skqp/release branch.
am: 648ed10be0

Change-Id: I227c95afe090c80b78dae99677e3c7397c789c8e
diff --git a/Android.bp b/Android.bp
index 5a6468c..a11ba66 100644
--- a/Android.bp
+++ b/Android.bp
@@ -83,6 +83,7 @@
     ],
 
     local_include_dirs: [
+        "experimental/svg/model/",
         "gm/",
         "include/android/",
         "include/atlastext/",
@@ -141,6 +142,29 @@
     srcs: [
         "third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp",
         "dm/DMGpuTestProcs.cpp",
+        "experimental/svg/model/SkSVGAttribute.cpp",
+        "experimental/svg/model/SkSVGAttributeParser.cpp",
+        "experimental/svg/model/SkSVGCircle.cpp",
+        "experimental/svg/model/SkSVGClipPath.cpp",
+        "experimental/svg/model/SkSVGContainer.cpp",
+        "experimental/svg/model/SkSVGDOM.cpp",
+        "experimental/svg/model/SkSVGEllipse.cpp",
+        "experimental/svg/model/SkSVGGradient.cpp",
+        "experimental/svg/model/SkSVGLine.cpp",
+        "experimental/svg/model/SkSVGLinearGradient.cpp",
+        "experimental/svg/model/SkSVGNode.cpp",
+        "experimental/svg/model/SkSVGPath.cpp",
+        "experimental/svg/model/SkSVGPattern.cpp",
+        "experimental/svg/model/SkSVGPoly.cpp",
+        "experimental/svg/model/SkSVGRadialGradient.cpp",
+        "experimental/svg/model/SkSVGRect.cpp",
+        "experimental/svg/model/SkSVGRenderContext.cpp",
+        "experimental/svg/model/SkSVGSVG.cpp",
+        "experimental/svg/model/SkSVGShape.cpp",
+        "experimental/svg/model/SkSVGStop.cpp",
+        "experimental/svg/model/SkSVGTransformableNode.cpp",
+        "experimental/svg/model/SkSVGUse.cpp",
+        "experimental/svg/model/SkSVGValue.cpp",
         "gm/3dgm.cpp",
         "gm/OverStroke.cpp",
         "gm/aaa.cpp",
@@ -515,7 +539,6 @@
         "src/codec/SkColorTable.cpp",
         "src/codec/SkEncodedInfo.cpp",
         "src/codec/SkGifCodec.cpp",
-        "src/codec/SkHeifCodec.cpp",
         "src/codec/SkIcoCodec.cpp",
         "src/codec/SkJpegCodec.cpp",
         "src/codec/SkJpegDecoderMgr.cpp",
@@ -1138,6 +1161,8 @@
         "src/sksl/ir/SkSLSymbolTable.cpp",
         "src/sksl/ir/SkSLType.cpp",
         "src/sksl/ir/SkSLVariableReference.cpp",
+        "src/svg/SkSVGCanvas.cpp",
+        "src/svg/SkSVGDevice.cpp",
         "src/utils/Sk3D.cpp",
         "src/utils/SkAnimCodecPlayer.cpp",
         "src/utils/SkBase64.cpp",
@@ -1178,6 +1203,9 @@
         "src/utils/win/SkHRESULT.cpp",
         "src/utils/win/SkIStream.cpp",
         "src/utils/win/SkWGL_win.cpp",
+        "src/xml/SkDOM.cpp",
+        "src/xml/SkXMLParser.cpp",
+        "src/xml/SkXMLWriter.cpp",
         "src/xps/SkXPSDevice.cpp",
         "src/xps/SkXPSDocument.cpp",
         "tests/AAClipTest.cpp",
@@ -1624,6 +1652,7 @@
           "libz",
     ],
     static_libs: [
+          "libexpat",
           "libjpeg_static_ndk",
           "libjsoncpp_ndk",
           "libpng_ndk",
diff --git a/include/config/SkUserConfig.h b/include/config/SkUserConfig.h
index 208b3ee..3755818 100644
--- a/include/config/SkUserConfig.h
+++ b/include/config/SkUserConfig.h
@@ -10,7 +10,6 @@
 #define SK_GAMMA_APPLY_TO_A8
 #define SK_GAMMA_CONTRAST 0.0
 #define SK_GAMMA_EXPONENT 1.4
-#define SK_HAS_HEIF_LIBRARY
 #define SK_HAS_JPEG_LIBRARY
 #define SK_HAS_PNG_LIBRARY
 #define SK_HAS_WEBP_LIBRARY
@@ -18,3 +17,4 @@
 #define SK_SUPPORT_ATLAS_TEXT 1
 #define SK_TOOLS_REQUIRE_RESOURCES
 #define SK_VULKAN
+#define SK_XML
diff --git a/include/config/SkUserConfigManual.h b/include/config/SkUserConfigManual.h
index e96b715..65b29d0 100644
--- a/include/config/SkUserConfigManual.h
+++ b/include/config/SkUserConfigManual.h
@@ -1,12 +1,8 @@
-/*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
 #ifndef SkUserConfigManual_DEFINED
 #define SkUserConfigManual_DEFINED
-  // DON'T DEFINE THINGS HERE AS IT WILL RESULT IN DIFFERENCES WITH
-  // THE VERSION OF SKQP PUBLISHED ON SKIA.ORG
+// DON'T DEFINE THINGS HERE AS IT WILL RESULT IN DIFFERENCES WITH
+// THE VERSION OF SKQP PUBLISHED ON SKIA.ORG
 #endif // SkUserConfigManual_DEFINED
diff --git a/platform_tools/android/apps/skqp/src/main/Android.mk b/platform_tools/android/apps/skqp/src/main/Android.mk
index cdfdcd1..18f4a55 100644
--- a/platform_tools/android/apps/skqp/src/main/Android.mk
+++ b/platform_tools/android/apps/skqp/src/main/Android.mk
@@ -1,49 +1,18 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
+# Copyright 2019 Google LLC.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 LOCAL_PATH:= $(call my-dir)
-
 include $(CLEAR_VARS)
-
-# don't include this package in any target
 LOCAL_MODULE_TAGS := tests optional
-
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
 LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
 LOCAL_JNI_SHARED_LIBRARIES := libskqp_app
-
-# include both the 32 and 64 bit versions
 LOCAL_MULTILIB := both
-
 LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    android-support-design
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt
-
+LOCAL_STATIC_ANDROID_LIBRARIES := android-support-design
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
 LOCAL_SRC_FILES := $(call all-java-files-under, java)
-
 LOCAL_PACKAGE_NAME := CtsSkQPTestCases
-
-# Enforce public / test api only
 LOCAL_SDK_VERSION := test_current
-
 include $(BUILD_CTS_PACKAGE)
diff --git a/platform_tools/android/apps/skqp/src/main/AndroidTest.xml b/platform_tools/android/apps/skqp/src/main/AndroidTest.xml
index 5b0a7bb..03dc042 100644
--- a/platform_tools/android/apps/skqp/src/main/AndroidTest.xml
+++ b/platform_tools/android/apps/skqp/src/main/AndroidTest.xml
@@ -1,29 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+<!--
+Copyright 2019 Google LLC.
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
 -->
 <configuration description="Config for CTS SkQP test cases">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="uitoolkit" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
-    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsSkQPTestCases.apk" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="org.skia.skqp" />
-        <option name="runtime-hint" value="7m" />
-    </test>
+<option name="test-suite-tag" value="cts" />
+<option name="config-descriptor:metadata" key="component" value="uitoolkit" />
+<option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+<option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+<option name="cleanup-apks" value="true" />
+<option name="test-file-name" value="CtsSkQPTestCases.apk" />
+</target_preparer>
+<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+<option name="package" value="org.skia.skqp" />
+<option name="runtime-hint" value="7m" />
+</test>
 </configuration>
diff --git a/tools/skqp/generate_gn_args b/tools/skqp/generate_gn_args
index 9559c53..856050d 100755
--- a/tools/skqp/generate_gn_args
+++ b/tools/skqp/generate_gn_args
@@ -8,22 +8,13 @@
 import os
 import sys
 
+from skqp_gn_args import SkqpGnArgs
+
 fmt = '''
 target_cpu = "{arch}"
-is_debug = {debug}
 ndk = "{android_ndk_dir}"
+is_debug = {debug}
 ndk_api = {api_level}
-skia_enable_fontmgr_empty = true
-skia_enable_pdf = false
-skia_skqp_global_error_tolerance = 8
-skia_use_dng_sdk = false
-skia_use_expat = true
-skia_use_icu = false
-skia_use_libheif = false
-skia_use_lua = false
-skia_use_piex = false
-skia_tools_require_resources = true
-extra_cflags = [ "-DSK_ENABLE_DUMP_GPU", "-DSK_BUILD_FOR_SKQP" ]
 '''
 
 def parse_args():
@@ -47,11 +38,19 @@
     args.android_ndk_dir = os.path.abspath(args.android_ndk_dir)
     return args
 
+def write_gn(o, args):
+    o.write(fmt.format(**args))
+    for (k,v) in SkqpGnArgs.iteritems():
+        o.write('%s = %s\n' % (k,v) )
+
 def make_args_gn(out_dir, args):
+    if out_dir == '-':
+        write_gn(sys.stdout, args)
+        return
     if not os.path.exists(out_dir):
         os.makedirs(out_dir)
     with open(os.path.join(out_dir, 'args.gn'), 'w') as o:
-        o.write(fmt.format(**args))
+        write_gn(o, args)
 
 if __name__ == '__main__':
     args = parse_args()
diff --git a/tools/skqp/gn_to_bp.py b/tools/skqp/gn_to_bp.py
index 58d384e..d6b8495 100755
--- a/tools/skqp/gn_to_bp.py
+++ b/tools/skqp/gn_to_bp.py
@@ -23,6 +23,8 @@
 
 import gn_to_bp_utils
 
+from skqp_gn_args import SkqpGnArgs
+
 # First we start off with a template for Android.bp,
 # with holes for source lists and include directories.
 bp = string.Template('''// This file is autogenerated by tools/skqp/gn_to_bp.py.
@@ -105,6 +107,7 @@
           "libz",
     ],
     static_libs: [
+          "libexpat",
           "libjpeg_static_ndk",
           "libjsoncpp_ndk",
           "libpng_ndk",
@@ -121,21 +124,6 @@
   # setup skqp
   'is_debug':   'false',
   'ndk_api':    '26',
-  'skia_skqp_global_error_tolerance': '8',
-  'skia_tools_require_resources':     'true',
-
-  # setup vulkan
-  'skia_use_vulkan':    'true',
-
-  # enable/disable skia subsystems
-  'skia_enable_fontmgr_empty': 'true',
-  'skia_enable_pdf':           'false',
-  'skia_enable_skottie':       'false',
-  'skia_use_expat':            'true',
-  'skia_use_dng_sdk':          'false',
-  'skia_use_icu':              'false',
-  'skia_use_lua':              'false',
-  'skia_use_piex':             'false',
 
   # specify that the Android.bp will supply the necessary components
   'skia_use_system_expat':         'true', # removed this when gn is fixed
@@ -146,6 +134,9 @@
   'skia_use_system_zlib':          'true',
 }
 
+for (k,v) in SkqpGnArgs.iteritems():
+    gn_args[k] = v
+
 js = gn_to_bp_utils.GenerateJSONFromGN(gn_args)
 
 def strip_slashes(lst):
diff --git a/tools/skqp/release.sh b/tools/skqp/release.sh
new file mode 100755
index 0000000..f96fb9f
--- /dev/null
+++ b/tools/skqp/release.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+# Copyright 2019 Google LLC.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+cd "$(dirname "$0")/../.."
+
+set -e -x
+
+[ -f platform_tools/android/apps/skqp/src/main/assets/files.checksum       ] || exit 1
+[ -f platform_tools/android/apps/skqp/src/main/assets/skqp/rendertests.txt ] || exit 1
+[ -f platform_tools/android/apps/skqp/src/main/assets/skqp/unittests.txt   ] || exit 1
+
+python tools/skqp/gn_to_bp.py
+python tools/skqp/download_model
+python tools/skqp/setup_resources
+
+touch MODULE_LICENSE_BSD
+
+cat > platform_tools/android/apps/skqp/src/main/Android.mk <<- "EOM"
+	# Copyright 2019 Google LLC.
+	# Use of this source code is governed by a BSD-style license that can be
+	# found in the LICENSE file.
+	LOCAL_PATH:= $(call my-dir)
+	include $(CLEAR_VARS)
+	LOCAL_MODULE_TAGS := tests optional
+	LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+	LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+	LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
+	LOCAL_JNI_SHARED_LIBRARIES := libskqp_app
+	LOCAL_MULTILIB := both
+	LOCAL_USE_AAPT2 := true
+	LOCAL_STATIC_ANDROID_LIBRARIES := android-support-design
+	LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
+	LOCAL_SRC_FILES := $(call all-java-files-under, java)
+	LOCAL_PACKAGE_NAME := CtsSkQPTestCases
+	LOCAL_SDK_VERSION := test_current
+	include $(BUILD_CTS_PACKAGE)
+EOM
+
+cat > include/config/SkUserConfigManual.h <<- "EOM"
+	// Copyright 2019 Google LLC.
+	// Use of this source code is governed by a BSD-style license that can be
+	// found in the LICENSE file.
+	#ifndef SkUserConfigManual_DEFINED
+	#define SkUserConfigManual_DEFINED
+	// DON'T DEFINE THINGS HERE AS IT WILL RESULT IN DIFFERENCES WITH
+	// THE VERSION OF SKQP PUBLISHED ON SKIA.ORG
+	#endif // SkUserConfigManual_DEFINED
+EOM
+
+cat > platform_tools/android/apps/skqp/src/main/AndroidTest.xml <<- "EOM"
+	<?xml version="1.0" encoding="utf-8"?>
+	<!--
+	Copyright 2019 Google LLC.
+	Use of this source code is governed by a BSD-style license that can be
+	found in the LICENSE file.
+	-->
+	<configuration description="Config for CTS SkQP test cases">
+	<option name="test-suite-tag" value="cts" />
+	<option name="config-descriptor:metadata" key="component" value="uitoolkit" />
+	<option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+	<option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+	<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+	<option name="cleanup-apks" value="true" />
+	<option name="test-file-name" value="CtsSkQPTestCases.apk" />
+	</target_preparer>
+	<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+	<option name="package" value="org.skia.skqp" />
+	<option name="runtime-hint" value="7m" />
+	</test>
+	</configuration>
+EOM
+
+[ -f platform_tools/android/apps/skqp/src/main/assets/.gitignore ] && \
+    git rm platform_tools/android/apps/skqp/src/main/assets/.gitignore
+
+git add                                                       \
+    Android.bp                                                \
+    MODULE_LICENSE_BSD                                        \
+    include/config/SkUserConfig.h                             \
+    include/config/SkUserConfigManual.h                       \
+    platform_tools/android/apps/skqp/src/main/Android.mk      \
+    platform_tools/android/apps/skqp/src/main/AndroidTest.xml \
+    platform_tools/android/apps/skqp/src/main/assets
diff --git a/tools/skqp/skqp_gn_args.py b/tools/skqp/skqp_gn_args.py
new file mode 100644
index 0000000..1c55194
--- /dev/null
+++ b/tools/skqp/skqp_gn_args.py
@@ -0,0 +1,19 @@
+# Copyright 2019 Google LLC.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+SkqpGnArgs = {
+    'extra_cflags':                     '[ "-DSK_ENABLE_DUMP_GPU", "-DSK_BUILD_FOR_SKQP" ]',
+    'skia_enable_fontmgr_android':      'false',
+    'skia_enable_fontmgr_empty':        'true',
+    'skia_enable_pdf':                  'false',
+    'skia_enable_skottie':              'false',
+    'skia_skqp_global_error_tolerance': '8',
+    'skia_tools_require_resources':     'true',
+    'skia_use_dng_sdk':                 'false',
+    'skia_use_expat':                   'true',
+    'skia_use_icu':                     'false',
+    'skia_use_libheif':                 'false',
+    'skia_use_lua':                     'false',
+    'skia_use_piex':                    'false',
+    'skia_use_vulkan':                  'true',
+}