Revert "Add JavaInputStreamAdaptor files into third_party directory."
This reverts commit cf8b723ffdb2334022652a32e69169f97a8967ed.
Reason for revert: reverting and relanding to make the google3
roller happy
Original change's description:
> Add JavaInputStreamAdaptor files into third_party directory.
>
> This code needs to be migrated out of the main Skia directory due to its
> use of the Apache 2.0 license. A followup CL will remove these files
> from their current home at platform_tools/android/apps/skottie/src/
> main/cpp.
>
> Change-Id: I939b05afcebb29e1deab1d4ae1b38012f719cf7e
> Bug: skia:10310
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295082
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Reviewed-by: Weston Tracey <westont@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
TBR=bungeman@google.com,westont@google.com,johnstiles@google.com
Change-Id: Ib3cbad92b8c5616735a013d06e3345ac50f78c84
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10310, skia:10353
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/295200
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/third_party/aosp/JavaInputStreamAdaptor.cpp b/third_party/aosp/JavaInputStreamAdaptor.cpp
deleted file mode 100644
index caeb859..0000000
--- a/third_party/aosp/JavaInputStreamAdaptor.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * 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.
- */
-
-
-#include "include/core/SkTypes.h"
-#include "platform_tools/android/apps/skottie/src/main/cpp/JavaInputStreamAdaptor.h"
-
-static jclass findClassCheck(JNIEnv* env, const char classname[]) {
- jclass clazz = env->FindClass(classname);
- SkASSERT(!env->ExceptionCheck());
- return clazz;
-}
-
-static jmethodID getMethodIDCheck(JNIEnv* env, jclass clazz,
- const char methodname[], const char type[]) {
- jmethodID id = env->GetMethodID(clazz, methodname, type);
- SkASSERT(!env->ExceptionCheck());
- return id;
-}
-
-static jmethodID gInputStream_readMethodID;
-static jmethodID gInputStream_skipMethodID;
-
-static JNIEnv* get_env_or_die(JavaVM* jvm) {
- JNIEnv* env;
- if (jvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
- char errorMessage[256];
- sprintf(errorMessage, "Failed to get JNIEnv for JavaVM: %p", jvm);
- SK_ABORT(errorMessage);
- }
- return env;
-}
-
-/**
- * Wrapper for a Java InputStream.
- */
-class JavaInputStreamAdaptor : public SkStream {
- JavaInputStreamAdaptor(JavaVM* jvm, jobject js, jbyteArray ar, jint capacity,
- bool swallowExceptions)
- : fJvm(jvm)
- , fJavaInputStream(js)
- , fJavaByteArray(ar)
- , fCapacity(capacity)
- , fBytesRead(0)
- , fIsAtEnd(false)
- , fSwallowExceptions(swallowExceptions) {}
-
-public:
- static JavaInputStreamAdaptor* Create(JNIEnv* env, jobject js, jbyteArray ar,
- bool swallowExceptions) {
- JavaVM* jvm;
- if (env->GetJavaVM(&jvm) != JNI_OK) {
- SK_ABORT("Failed to get JavaVM");
- }
-
- js = env->NewGlobalRef(js);
- if (!js) {
- return nullptr;
- }
-
- ar = (jbyteArray) env->NewGlobalRef(ar);
- if (!ar) {
- env->DeleteGlobalRef(js);
- return nullptr;
- }
-
- jint capacity = env->GetArrayLength(ar);
- return new JavaInputStreamAdaptor(jvm, js, ar, capacity, swallowExceptions);
- }
-
- ~JavaInputStreamAdaptor() override {
- auto* env = get_env_or_die(fJvm);
- env->DeleteGlobalRef(fJavaInputStream);
- env->DeleteGlobalRef(fJavaByteArray);
- }
-
- size_t read(void* buffer, size_t size) override {
- auto* env = get_env_or_die(fJvm);
- if (!fSwallowExceptions && checkException(env)) {
- // Just in case the caller did not clear from a previous exception.
- return 0;
- }
- if (NULL == buffer) {
- if (0 == size) {
- return 0;
- } else {
- /* InputStream.skip(n) can return <=0 but still not be at EOF
- If we see that value, we need to call read(), which will
- block if waiting for more data, or return -1 at EOF
- */
- size_t amountSkipped = 0;
- do {
- size_t amount = this->doSkip(size - amountSkipped, env);
- if (0 == amount) {
- char tmp;
- amount = this->doRead(&tmp, 1, env);
- if (0 == amount) {
- // if read returned 0, we're at EOF
- fIsAtEnd = true;
- break;
- }
- }
- amountSkipped += amount;
- } while (amountSkipped < size);
- return amountSkipped;
- }
- }
- return this->doRead(buffer, size, env);
- }
-
- bool isAtEnd() const override { return fIsAtEnd; }
-
-private:
- size_t doRead(void* buffer, size_t size, JNIEnv* env) {
- size_t bytesRead = 0;
- // read the bytes
- do {
- jint requested = 0;
- if (size > static_cast<size_t>(fCapacity)) {
- requested = fCapacity;
- } else {
- // This is safe because requested is clamped to (jint)
- // fCapacity.
- requested = static_cast<jint>(size);
- }
-
- jint n = env->CallIntMethod(fJavaInputStream,
- gInputStream_readMethodID, fJavaByteArray, 0, requested);
- if (checkException(env)) {
- SkDebugf("---- read threw an exception\n");
- return bytesRead;
- }
-
- if (n < 0) { // n == 0 should not be possible, see InputStream read() specifications.
- fIsAtEnd = true;
- break; // eof
- }
-
- env->GetByteArrayRegion(fJavaByteArray, 0, n,
- reinterpret_cast<jbyte*>(buffer));
- if (checkException(env)) {
- SkDebugf("---- read:GetByteArrayRegion threw an exception\n");
- return bytesRead;
- }
-
- buffer = (void*)((char*)buffer + n);
- bytesRead += n;
- size -= n;
- fBytesRead += n;
- } while (size != 0);
-
- return bytesRead;
- }
-
- size_t doSkip(size_t size, JNIEnv* env) {
- jlong skipped = env->CallLongMethod(fJavaInputStream,
- gInputStream_skipMethodID, (jlong)size);
- if (checkException(env)) {
- SkDebugf("------- skip threw an exception\n");
- return 0;
- }
- if (skipped < 0) {
- skipped = 0;
- }
-
- return (size_t)skipped;
- }
-
- bool checkException(JNIEnv* env) {
- if (!env->ExceptionCheck()) {
- return false;
- }
-
- env->ExceptionDescribe();
- if (fSwallowExceptions) {
- env->ExceptionClear();
- }
-
- // There is no way to recover from the error, so consider the stream
- // to be at the end.
- fIsAtEnd = true;
-
- return true;
- }
-
- JavaVM* fJvm;
- jobject fJavaInputStream;
- jbyteArray fJavaByteArray;
- const jint fCapacity;
- size_t fBytesRead;
- bool fIsAtEnd;
- const bool fSwallowExceptions;
-};
-
-static SkStream* CreateJavaInputStreamAdaptor(JNIEnv* env, jobject stream, jbyteArray storage,
- bool swallowExceptions = true) {
- return JavaInputStreamAdaptor::Create(env, stream, storage, swallowExceptions);
-}
-
-static SkMemoryStream* adaptor_to_mem_stream(SkStream* stream) {
- SkASSERT(stream != NULL);
- size_t bufferSize = 4096;
- size_t streamLen = 0;
- size_t len;
- char* data = (char*)sk_malloc_throw(bufferSize);
-
- while ((len = stream->read(data + streamLen,
- bufferSize - streamLen)) != 0) {
- streamLen += len;
- if (streamLen == bufferSize) {
- bufferSize *= 2;
- data = (char*)sk_realloc_throw(data, bufferSize);
- }
- }
- data = (char*)sk_realloc_throw(data, streamLen);
-
- SkMemoryStream* streamMem = new SkMemoryStream();
- streamMem->setMemoryOwned(data, streamLen);
- return streamMem;
-}
-
-SkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream,
- jbyteArray storage) {
- std::unique_ptr<SkStream> adaptor(CreateJavaInputStreamAdaptor(env, stream, storage));
- if (NULL == adaptor.get()) {
- return NULL;
- }
- return adaptor_to_mem_stream(adaptor.get());
-}
-
-
-extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
- JNIEnv* env;
- if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
- return -1;
- }
-
- jclass inputStream_Clazz = findClassCheck(env, "java/io/InputStream");
- gInputStream_readMethodID = getMethodIDCheck(env, inputStream_Clazz, "read", "([BII)I");
- gInputStream_skipMethodID = getMethodIDCheck(env, inputStream_Clazz, "skip", "(J)J");
-
- return JNI_VERSION_1_6;
-}
diff --git a/third_party/aosp/JavaInputStreamAdaptor.h b/third_party/aosp/JavaInputStreamAdaptor.h
deleted file mode 100644
index 8cfc2a4..0000000
--- a/third_party/aosp/JavaInputStreamAdaptor.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.
- */
-
-#pragma once
-
-#include "include/core/SkStream.h"
-#include "include/private/SkMalloc.h"
-#include <jni.h>
-
-SkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream,
- jbyteArray storage);
diff --git a/third_party/aosp/LICENSE b/third_party/aosp/LICENSE
deleted file mode 100644
index 64635a4..0000000
--- a/third_party/aosp/LICENSE
+++ /dev/null
@@ -1,161 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and
-distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the
-copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other
-entities that control, are controlled by, or are under common control with
-that entity. For the purposes of this definition, "control" means (i) the
-power, direct or indirect, to cause the direction or management of such
-entity, whether by contract or otherwise, or (ii) ownership of fifty
-percent (50%) or more of the outstanding shares, or (iii) beneficial
-ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising
-permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications,
-including but not limited to software source code, documentation
-source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation
-or translation of a Source form, including but not limited to compiled
-object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object
-form, made available under the License, as indicated by a copyright
-notice that is included in or attached to the work (an example is
-provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object
-form, that is based on (or derived from) the Work and for which the
-editorial revisions, annotations, elaborations, or other modifications
-represent, as a whole, an original work of authorship. For the purposes
-of this License, Derivative Works shall not include works that remain
-separable from, or merely link (or bind by name) to the interfaces of,
-the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original
-version of the Work and any modifications or additions to that Work or
-Derivative Works thereof, that is intentionally submitted to Licensor
-for inclusion in the Work by the copyright owner or by an individual or
-Legal Entity authorized to submit on behalf of the copyright owner. For
-the purposes of this definition, "submitted" means any form of electronic,
-verbal, or written communication sent to the Licensor or its
-representatives, including but not limited to communication on electronic
-mailing lists, source code control systems, and issue tracking systems that
-are managed by, or on behalf of, the Licensor for the purpose of discussing
-and improving the Work, but excluding communication that is conspicuously
-marked or otherwise designated in writing by the copyright owner as "Not
-a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on
-behalf of whom a Contribution has been received by Licensor and subsequently
-incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this
-License, each Contributor hereby grants to You a perpetual, worldwide,
-non-exclusive, no-charge, royalty-free, irrevocable copyright license to
-reproduce, prepare Derivative Works of, publicly display, publicly perform,
-sublicense, and distribute the Work and such Derivative Works in Source or
-Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this
-License, each Contributor hereby grants to You a perpetual, worldwide,
-non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
-this section) patent license to make, have made, use, offer to sell, sell,
-import, and otherwise transfer the Work, where such license applies only to
-those patent claims licensable by such Contributor that are necessarily
-infringed by their Contribution(s) alone or by combination of their
-Contribution(s) with the Work to which such Contribution(s) was submitted.
-If You institute patent litigation against any entity (including a cross-claim
-or counterclaim in a lawsuit) alleging that the Work or a Contribution
-incorporated within the Work constitutes direct or contributory patent
-infringement, then any patent licenses granted to You under this License
-for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or
-Derivative Works thereof in any medium, with or without modifications, and
-in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of
-this License; and
-You must cause any modified files to carry prominent notices stating that
-You changed the files; and
-You must retain, in the Source form of any Derivative Works that You
-distribute, all copyright, patent, trademark, and attribution notices
-from the Source form of the Work, excluding those notices that do not
-pertain to any part of the Derivative Works; and
-If the Work includes a "NOTICE" text file as part of its distribution,
-then any Derivative Works that You distribute must include a readable
-copy of the attribution notices contained within such NOTICE file, excluding
-those notices that do not pertain to any part of the Derivative Works, in
-at least one of the following places: within a NOTICE text file distributed
-as part of the Derivative Works; within the Source form or documentation, if
-provided along with the Derivative Works; or, within a display generated by
-the Derivative Works, if and wherever such third-party notices normally
-appear. The contents of the NOTICE file are for informational purposes
-only and do not modify the License. You may add Your own attribution
-notices within Derivative Works that You distribute, alongside or as
-an addendum to the NOTICE text from the Work, provided that such additional
-attribution notices cannot be construed as modifying the License.
-
-You may add Your own copyright statement to Your modifications and may provide
-additional or different license terms and conditions for use, reproduction, or
-distribution of Your modifications, or for any such Derivative Works as a
-whole, provided Your use, reproduction, and distribution of the Work otherwise
-complies with the conditions stated in this License.
-5. Submission of Contributions. Unless You explicitly state otherwise, any
-Contribution intentionally submitted for inclusion in the Work by You to the
-Licensor shall be under the terms and conditions of this License, without any
-additional terms or conditions. Notwithstanding the above, nothing herein
-shall supersede or modify the terms of any separate license agreement you
-may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names,
-trademarks, service marks, or product names of the Licensor, except as
-required for reasonable and customary use in describing the origin of the
-Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to
-in writing, Licensor provides the Work (and each Contributor provides its
-Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
-ANY KIND, either express or implied, including, without limitation, any
-warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
-FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining
-the appropriateness of using or redistributing the Work and assume any risks
-associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in
-tort (including negligence), contract, or otherwise, unless required by
-applicable law (such as deliberate and grossly negligent acts) or agreed to
-in writing, shall any Contributor be liable to You for damages, including
-any direct, indirect, special, incidental, or consequential damages of any
-character arising as a result of this License or out of the use or inability
-to use the Work (including but not limited to damages for loss of goodwill,
-work stoppage, computer failure or malfunction, or any and all other
-commercial damages or losses), even if such Contributor has been advised
-of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the
-Work or Derivative Works thereof, You may choose to offer, and charge a
-fee for, acceptance of support, warranty, indemnity, or other liability
-obligations and/or rights consistent with this License. However, in accepting
-such obligations, You may act only on Your own behalf and on Your sole
-responsibility, not on behalf of any other Contributor, and only if You
-agree to indemnify, defend, and hold each Contributor harmless for any
-liability incurred by, or claims asserted against, such Contributor by
-reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file