From efdd135e28abf6df02130ba474d6b7b4436933b3 Mon Sep 17 00:00:00 2001 From: Xwite Date: Mon, 12 Jun 2023 01:33:36 +0000 Subject: [PATCH 1/5] Bump cronet from 114.0.5735.57 to 114.0.5735.60 - Changes in the [Git log](https://chromium.googlesource.com/chromium/src/+log/114.0.5735.57..114.0.5735.60) --- app/cronetlib/cronet_api.jar | Bin 166553 -> 166554 bytes app/cronetlib/cronet_impl_common_java.jar | Bin 118983 -> 118984 bytes app/src/main/assets/cronet.json | 2 +- app/src/main/assets/updateLog.md | 1 + gradle.properties | 2 +- 5 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/cronetlib/cronet_api.jar b/app/cronetlib/cronet_api.jar index 1df93ef04769502bc38a652b76a1f8764fbff59b..36f94ff4d3434763c0a1957ce32efa67ee5d25f0 100644 GIT binary patch delta 1476 zcmY+EYiyHc6vz9Vv3uznTDq~)6$XN}@ zf8S0;3f_qnl+?bEwMMTJpUoCH_H|t%Tct{5Uq}>(D?2Lo+w9J!YOB>=Ex8@^%iSzF zo9tFwi_>AVS2cBbQXeDF4&I#s|2#$cm*NCW zD0NXEP1w{0$D#NZA)VZK-Ao&j*oSEC20!e%qtMPf+wct^E%UE#icS<@xF2-#!WSjz zI!)p&=s69|pxY{V<8?J|+Q14hMNaT-OVfEh9`+HqXH@`B```em?81mUSuUP;uzY;V z&T^E4U_}oV8+2v_X8bKkJ>>6ZD~J2HMhLV|vQ79)kVbsK9$w~Z+<69`huK$`K_N!YP{Rwy6@bYTY@?{4?xPC7c4V-A(nIYZ z>Lc;Dr!rKBvz)Z`aH2AZaQnAPlLB=02GjC0ThMR&cw1Ecq4HB8TEy(Ws%!qL!tQr>wp`FFC zHUw@cU*diV%^|w@KOw5K?hg@hvkHoE?-1qadbonzct|Ir#acl6Tj057x{4BCHcauh zLL4{?HVhQf1x7=3fe^>f7709FMEJX5iuW4?xoe&rJ2IEdnv{k`{IiFwm*Yu0Er(5~2)aMSL@$`-J-5_LmO%Vy1E_Z>qOq4` ziH{X(lLwZ!<6tjHtP$hAa17#Fv<5(rOIlW{j3waVK9ZLga%>Tqh=P$O^cOM>pW>Dx zDA=({u--?8eJBN>4enW$gaO|OKntwfa3uf-A>vS;CUp11UiiB{6=b3L8CHPH5gPHg zezJXSk7_GFX~;lJ5S%dI$j@15VtT%543e&`P$-xG2lWm+sdzVOPHD~yr^Qi!CQdtFr9E4 z$HH(38pk)d7UN;ipl%Qx&^)n0bI>zLu2&{Ga0^@HwR|1kRp8Q<6h!kBEv{sUPTD`i zhml&L9K%DTd+$w7hT`lgeDMaOd9IVXI!N>Eh|rBZn%gAkk5I|@9ZrN_SrtCML+Zy7 z@;VoMY}Q1%N?Tn({Y^hcpU zX;H*~qExi?51x|_(Mz;{nA+%B-9+YBSr)!EOl?&ErQ(S;F!OTr2$frNF>)4m<4`Uw zOM8xn8&>e%e2yQCfE7X_4?Yv2RQY-Z{GbGc-2Xnw8#r_pdSS|}=HVHZL3qL4^)PKCgmK#VYGOT37p zphG>~WUh^6!fBG zf7CtV;>oa?NizQ!jxd*PX)1DziE}C$T~0<(GVR-yCrV+IU76#OwUIA8J;0N5Rb*R5 z8#_I(G8$ino4t$i&oMjIuE4-Y5{8B6b#gph6x=sn8sPQw6deH zl}0zSWOr`3mTTZIvU=*xz{XDH%FIkNYoa!vfr&-l@YILH-1^o)4Ox-&WLx!VEDHys zG@Hc$tn?>~G1gRbe+}*QU`>^>2-`>j3+l9YAP1AKxgB)ryvTXgfkWgjpq?gGzUVCT zA5I*k_c^rbitaM%$fFmxDVWE!?ru*Rz8nzs-gVe8PQi6t*425-kw+J>p9a0++OC3- zx!(7W8!2886=&#E0sRP5R}nsZr%(}oc6^LZ7R8*L8<5z-gyzr&9PI0)=A5{SYOR$_ z5PK)S9Mlr}HzA>w?rh>B`*u@hN2&F-m__$P)iKlTG@9t1O1{kO5rZHe}N(~T`CRrDO+qDF9MA?x(X)f zLEkEzBd=0Y?ORGOoy1?XM%uFyoD%fh`)o6gtbvsr7i!FmPjfV+uttrMj}o+0+t84u zrr4*NZo(T>!!rzL!3+CCIhY{k280}R>quk71IC! diff --git a/app/src/main/assets/cronet.json b/app/src/main/assets/cronet.json index 40a9ca12c..20db6c2b6 100644 --- a/app/src/main/assets/cronet.json +++ b/app/src/main/assets/cronet.json @@ -1 +1 @@ -{"x86":"86a6007bc94a30af4bc61789d28a8f00","armeabi-v7a":"309165f6aac13e01023448a22e9495f2","x86_64":"2ff1e1f490daf7ed535c081807661f7d","arm64-v8a":"722ae9a6b64c1643f5b9db41509342e5","version":"114.0.5735.57"} \ No newline at end of file +{"x86":"46d237d466eddce29196b3f9a71aa23a","armeabi-v7a":"9507ec16a4a3141c4cfd50bec40cdb33","x86_64":"fad87777baadfee3cbc4bd6217519283","arm64-v8a":"68790ba327b8c180e206bd7c61f8254d","version":"114.0.5735.60"} \ No newline at end of file diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 1e9e86511..34047bdbe 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -13,6 +13,7 @@ * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! **2023/06/11** +* 更新cronet: 114.0.5735.60 * 修复长按菜单全文搜索结果不全或无结果问题 * 优化全文搜索速度 diff --git a/gradle.properties b/gradle.properties index f2b8dd45e..cd75610a0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -41,7 +41,7 @@ android.defaults.buildfeatures.shaders=false # and none from the library's dependencies, thereby reducing the size of the R class for that library. android.nonTransitiveRClass=true # https://chromiumdash.appspot.com/releases?platform=Android -CronetVersion=114.0.5735.57 +CronetVersion=114.0.5735.60 CronetMainVersion=114.0.0.0 android.injected.testOnly=false android.nonFinalResIds=true \ No newline at end of file From d863692ace5813ce6ce4f2b91952ecff44cb8f89 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Mon, 12 Jun 2023 11:28:50 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/base/adapter/RecyclerAdapter.kt | 2 +- app/src/main/java/io/legado/app/help/JsExtensions.kt | 8 +++----- app/src/main/java/io/legado/app/help/http/HttpHelper.kt | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt b/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt index fd5288016..d45502c28 100644 --- a/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt +++ b/app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt @@ -161,7 +161,7 @@ abstract class RecyclerAdapter(protected val context: Co onCurrentListChanged() } } - handler.postDelayed(1000) { + handler.postDelayed(500) { if (diffJob?.isCompleted == false) { diffJob?.cancel() setItems(items) diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 2ddb94eeb..c82b849e6 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -727,15 +727,13 @@ interface JsExtensions : JsEncodeUtils { var qTTF = CacheManager.getQueryTTF(key) if (qTTF != null) return qTTF val font: ByteArray? = when { - str.isAbsUrl() -> runBlocking { + str.isAbsUrl() -> { var x = CacheManager.getByteArray(key) if (x == null) { x = AnalyzeUrl(str, source = getSource()).getByteArray() - x.let { - CacheManager.put(key, it) - } + CacheManager.put(key, x) } - return@runBlocking x + x } str.isContentScheme() -> Uri.parse(str).readBytes(appCtx) diff --git a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt index 7905e354a..8dd9034a5 100644 --- a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt +++ b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt @@ -71,7 +71,7 @@ val okHttpClient: OkHttpClient by lazy { }) .addNetworkInterceptor { chain -> var request = chain.request() - val enableCookieJar = request.header(cookieJarHeader) != null + val enableCookieJar = request.header(cookieJarHeader) != null if (enableCookieJar) { val requestBuilder = request.newBuilder() From 794acac28fcdd6d74cbcc7a6e0e42b25151fbc5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 05:08:27 +0000 Subject: [PATCH 3/5] Bump androidx.fragment:fragment-ktx from 1.5.7 to 1.6.0 Bumps androidx.fragment:fragment-ktx from 1.5.7 to 1.6.0. --- updated-dependencies: - dependency-name: androidx.fragment:fragment-ktx dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 7ebca8006..c3320ce89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -160,7 +160,7 @@ dependencies { implementation('androidx.core:core-ktx:1.10.1') implementation('androidx.appcompat:appcompat:1.6.1') implementation('androidx.activity:activity-ktx:1.7.2') - implementation('androidx.fragment:fragment-ktx:1.5.7') + implementation('androidx.fragment:fragment-ktx:1.6.0') implementation('androidx.preference:preference-ktx:1.2.0') implementation('androidx.constraintlayout:constraintlayout:2.1.4') implementation('androidx.swiperefreshlayout:swiperefreshlayout:1.1.0') From 9e75cce87ceb92a23b41b1ba4f5d4624e01566ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 05:13:06 +0000 Subject: [PATCH 4/5] Bump kotlin_version from 1.8.21 to 1.8.22 Bumps `kotlin_version` from 1.8.21 to 1.8.22. Updates `org.jetbrains.kotlin.android` from 1.8.21 to 1.8.22 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.22/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.21...v1.8.22) Updates `org.jetbrains.kotlin:kotlin-stdlib-jdk8` from 1.8.21 to 1.8.22 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.22/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.21...v1.8.22) Updates `org.jetbrains.kotlin:kotlin-reflect` from 1.8.21 to 1.8.22 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.22/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.21...v1.8.22) --- updated-dependencies: - dependency-name: org.jetbrains.kotlin.android dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-stdlib-jdk8 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-reflect dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7b58f2cff..36fcbee32 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { ext{ compile_sdk_version = 33 build_tool_version = '33.0.1' - kotlin_version = '1.8.21' + kotlin_version = '1.8.22' agp_version = '8.0.2' //exoplayer_version = '2.18.6' media3_version = "1.0.2" From 42a0c4f6d7dc9d261fccef59d87432cba6100e81 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Mon, 12 Jun 2023 15:52:03 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/help/source/SourceVerificationHelp.kt | 88 ++++++++++++------- .../ui/association/VerificationCodeDialog.kt | 36 ++++---- .../legado/app/ui/browser/WebViewActivity.kt | 6 +- .../io/legado/app/ui/browser/WebViewModel.kt | 3 + 4 files changed, 79 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt b/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt index 908ad1a1f..432fcd081 100644 --- a/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt +++ b/app/src/main/java/io/legado/app/help/source/SourceVerificationHelp.kt @@ -8,55 +8,73 @@ import io.legado.app.help.IntentData import io.legado.app.ui.association.VerificationCodeActivity import io.legado.app.ui.browser.WebViewActivity import io.legado.app.utils.startActivity -import kotlinx.coroutines.runBlocking import splitties.init.appCtx +import java.util.concurrent.locks.LockSupport +import kotlin.time.Duration.Companion.minutes object SourceVerificationHelp { - private var key: String = "" - /** + private val waitTime = 1.minutes.inWholeNanoseconds + + private fun getKey(source: BaseSource) = getKey(source.getKey()) + fun getKey(sourceKey: String) = "${sourceKey}_verificationResult" + + /** * 获取书源验证结果 * 图片验证码 防爬 滑动验证码 点击字符 等等 */ - fun getVerificationResult(source: BaseSource?, url: String, title: String, useBrowser: Boolean): String { - source ?: throw NoStackTraceException("getVerificationResult parameter source cannot be null") - return runBlocking { - key = "${source.getKey()}_verificationResult" - CacheManager.delete(key) + fun getVerificationResult( + source: BaseSource?, + url: String, + title: String, + useBrowser: Boolean + ): String { + source + ?: throw NoStackTraceException("getVerificationResult parameter source cannot be null") - if (!useBrowser) { - appCtx.startActivity { - putExtra("imageUrl", url) - putExtra("sourceOrigin", source.getKey()) - putExtra("sourceName", source.getTag()) - } - } else { - startBrowser(source, url, title, true) - } + val key = getKey(source) + CacheManager.delete(key) - var waitUserInput = false - while(CacheManager.get(key) == null) { - if (!waitUserInput) { - AppLog.putDebug("等待返回验证结果...") - waitUserInput = true - } + if (!useBrowser) { + appCtx.startActivity { + putExtra("imageUrl", url) + putExtra("sourceOrigin", source.getKey()) + putExtra("sourceName", source.getTag()) + IntentData.put(key, Thread.currentThread()) } - CacheManager.get(key)!!.let { - it.ifBlank { - throw NoStackTraceException("验证结果为空") - } + } else { + startBrowser(source, url, title, true) + } + + var waitUserInput = false + while (CacheManager.get(key) == null) { + if (!waitUserInput) { + AppLog.putDebug("等待返回验证结果...") + waitUserInput = true } - } + LockSupport.parkNanos(this, waitTime) + } + + return CacheManager.get(key)!!.let { + it.ifBlank { + throw NoStackTraceException("验证结果为空") + } + } } /** * 启动内置浏览器 - @param saveResult 保存网页源代码到数据库 + * @param saveResult 保存网页源代码到数据库 */ - fun startBrowser(source: BaseSource?, url: String, title: String, saveResult: Boolean? = false) { + fun startBrowser( + source: BaseSource?, + url: String, + title: String, + saveResult: Boolean? = false + ) { source ?: throw NoStackTraceException("startBrowser parameter source cannot be null") - key = "${source.getKey()}_verificationResult" + val key = getKey(source) appCtx.startActivity { putExtra("title", title) putExtra("url", url) @@ -64,10 +82,14 @@ object SourceVerificationHelp { putExtra("sourceName", source.getTag()) putExtra("sourceVerificationEnable", saveResult) IntentData.put(url, source.getHeaderMap(true)) + IntentData.put(key, Thread.currentThread()) } } - fun checkResult() { + + fun checkResult(key: String) { CacheManager.get(key) ?: CacheManager.putMemory(key, "") + val thread = IntentData.get(key) + LockSupport.unpark(thread) } -} \ No newline at end of file +} diff --git a/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt b/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt index a8d9af42b..9d5de7641 100644 --- a/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt @@ -56,20 +56,20 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification setLayout(1f, ViewGroup.LayoutParams.WRAP_CONTENT) } - override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + private var sourceOrigin: String? = null + private var key = "" + + override fun onFragmentCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run { initMenu() - binding.run { - toolBar.setBackgroundColor(primaryColor) - arguments?.let { arguments -> - toolBar.subtitle = arguments.getString("sourceName") - val sourceOrigin = arguments.getString("sourceOrigin") - arguments.getString("imageUrl")?.let { imageUrl -> - loadImage(imageUrl, sourceOrigin) - verificationCodeImageView.setOnClickListener { - showDialogFragment(PhotoDialog(imageUrl, sourceOrigin)) - } - } - } + val arguments = arguments ?: return@run + toolBar.setBackgroundColor(primaryColor) + toolBar.subtitle = arguments.getString("sourceName") + sourceOrigin = arguments.getString("sourceOrigin") + key = SourceVerificationHelp.getKey(sourceOrigin!!) + val imageUrl = arguments.getString("imageUrl") ?: return@run + loadImage(imageUrl, sourceOrigin) + verificationCodeImageView.setOnClickListener { + showDialogFragment(PhotoDialog(imageUrl, sourceOrigin)) } } @@ -118,20 +118,16 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification override fun onMenuItemClick(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_ok -> { - val sourceOrigin = arguments?.getString("sourceOrigin") - val key = "${sourceOrigin}_verificationResult" val verificationCode = binding.verificationCode.text.toString() - verificationCode.let { - CacheManager.putMemory(key, it) - dismiss() - } + CacheManager.putMemory(key, verificationCode) + dismiss() } } return false } override fun onDestroy() { - SourceVerificationHelp.checkResult() + SourceVerificationHelp.checkResult(key) super.onDestroy() activity?.finish() } diff --git a/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt b/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt index 40598e232..881ddc6ab 100644 --- a/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt +++ b/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt @@ -172,8 +172,12 @@ class WebViewActivity : VMBaseActivity() { return super.onKeyUp(keyCode, event) } + override fun finish() { + SourceVerificationHelp.checkResult(viewModel.key) + super.finish() + } + override fun onDestroy() { - SourceVerificationHelp.checkResult() super.onDestroy() binding.webView.destroy() } diff --git a/app/src/main/java/io/legado/app/ui/browser/WebViewModel.kt b/app/src/main/java/io/legado/app/ui/browser/WebViewModel.kt index 3ddec4f49..7c8f6f77b 100644 --- a/app/src/main/java/io/legado/app/ui/browser/WebViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/browser/WebViewModel.kt @@ -14,6 +14,7 @@ import io.legado.app.help.CacheManager import io.legado.app.help.IntentData import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.source.SourceVerificationHelp import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.DocumentUtils import io.legado.app.utils.FileUtils @@ -30,6 +31,7 @@ class WebViewModel(application: Application) : BaseViewModel(application) { val headerMap: HashMap = hashMapOf() var sourceVerificationEnable: Boolean = false var sourceOrigin: String = "" + var key = "" fun initData( intent: Intent, @@ -39,6 +41,7 @@ class WebViewModel(application: Application) : BaseViewModel(application) { val url = intent.getStringExtra("url") ?: throw NoStackTraceException("url不能为空") sourceOrigin = intent.getStringExtra("sourceOrigin") ?: "" + key = SourceVerificationHelp.getKey(sourceOrigin) sourceVerificationEnable = intent.getBooleanExtra("sourceVerificationEnable", false) val headerMapF = IntentData.get>(url) val analyzeUrl = AnalyzeUrl(url, headerMapF = headerMapF)