From 3c4d6a59f190911733cdbcc241bb4e9a759a8532 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Tue, 11 May 2021 17:13:53 +0700 Subject: [PATCH 1/9] Update readme for context in `getDefaultLanguage` --- README.md | 2 +- .../localizationactivity/ui/LocalizationApplication.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a696afb..95f97eb 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Custom application class which extends from `LocalizationApplication` is require ```kotlin class MainApplication: LocalizationApplication() { /* ... */ - override fun getDefaultLanguage() = Locale.ENGLISH + override fun getDefaultLanguage(context: Context) = Locale.ENGLISH } ``` diff --git a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationApplication.kt b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationApplication.kt index 8cc7f00..f37d1ed 100644 --- a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationApplication.kt +++ b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationApplication.kt @@ -28,5 +28,5 @@ abstract class LocalizationApplication : Application() { return localizationDelegate.getResources(this, super.getResources()) } - abstract fun getDefaultLanguage(base: Context): Locale + abstract fun getDefaultLanguage(context: Context): Locale } From 58c353f727ba57f312dcaeebf565fd8681eda2ca Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Mon, 20 Dec 2021 02:27:57 +0700 Subject: [PATCH 2/9] Fix WebView crash issue #118 #114 #105 --- .../localizationapp/DialogWebViewTest.kt | 28 ++++++++- app/src/main/AndroidManifest.xml | 61 ++++++++++++++----- .../localizationapp/MainApplication.kt | 10 +++ .../localizationapp/hilt/StoryProvider.kt | 3 +- 4 files changed, 85 insertions(+), 17 deletions(-) diff --git a/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt b/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt index de888d6..414209f 100644 --- a/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt +++ b/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt @@ -27,20 +27,46 @@ class DialogWebViewTest { @Test fun dialogAndWebView() { + // Japan onScreen { buttonDialogWebView { scrollTo() click() } } - Thread.sleep(1000L) + onScreen { + buttonChangeLanguage { click() } + } + onScreen { + buttonJapanese { click() } + } onScreen { buttonShowWebsite { click() } } onScreen { + webViewContent { + withElement(Locator.ID, "content") { + hasText(ExpectedContent.HELLO_WORLD_JAPANESE) + } + } + buttonBack { click() } + } + onScreen { buttonBack { click() } } + onScreen { + textViewTitle { + hasText(ExpectedContent.HELLO_WORLD_JAPANESE) + } + } + // American + onScreen { + buttonDialogWebView { + scrollTo() + click() + } + } onScreen { buttonChangeLanguage { click() } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2d1da1d..3316e98 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,30 +10,61 @@ android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + Date: Mon, 20 Dec 2021 02:32:15 +0700 Subject: [PATCH 3/9] Add onCreate in LocalizationApplicationDelegate --- .../java/com/akexorcist/localizationapp/MainApplication.kt | 2 +- .../core/LocalizationApplicationDelegate.kt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/akexorcist/localizationapp/MainApplication.kt b/app/src/main/java/com/akexorcist/localizationapp/MainApplication.kt index 06cafb3..2d0b9ad 100644 --- a/app/src/main/java/com/akexorcist/localizationapp/MainApplication.kt +++ b/app/src/main/java/com/akexorcist/localizationapp/MainApplication.kt @@ -15,7 +15,7 @@ class MainApplication : Application() { override fun onCreate() { super.onCreate() - WebView(this).destroy() + localizationDelegate.onCreate(this) } override fun attachBaseContext(base: Context) { diff --git a/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationApplicationDelegate.kt b/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationApplicationDelegate.kt index a3c34c2..0b25171 100644 --- a/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationApplicationDelegate.kt +++ b/localization/src/main/java/com/akexorcist/localizationactivity/core/LocalizationApplicationDelegate.kt @@ -2,9 +2,13 @@ package com.akexorcist.localizationactivity.core import android.content.Context import android.content.res.Resources +import android.webkit.WebView import java.util.* class LocalizationApplicationDelegate { + fun onCreate(context: Context) { + WebView(context).destroy() + } fun onConfigurationChanged(context: Context) = LocalizationUtility.getLocalizedContext(context) From 5bdfc3c9382ebfff93e5b44f1a2f6b2d59f617a2 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Mon, 20 Dec 2021 03:00:29 +0700 Subject: [PATCH 4/9] Update device list for UI test --- .github/workflows/android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 60f877a..a2f7985 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -84,8 +84,8 @@ jobs: --type instrumentation --app app-debug/app-debug.apk --test app-debug-androidTest/app-debug-androidTest.apk - --device model=flame,version=30,locale=en,orientation=portrait - --device model=crownlte,version=28,locale=en,orientation=portrait + --device model=redfin,version=30,locale=en,orientation=portrait + --device model=greatlte,version=28,locale=en,orientation=portrait --device model=OnePlus3T,version=26,locale=en,orientation=portrait --device model=HWMHA,version=24,locale=en,orientation=portrait --device model=grandppltedx,version=23,locale=en,orientation=portrait From b789544d4bcb144107f23f691affb5aad106e6a9 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Mon, 20 Dec 2021 03:04:11 +0700 Subject: [PATCH 5/9] Change japan to italy for UI test --- .../com/akexorcist/localizationapp/DialogWebViewTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt b/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt index 414209f..05f1fab 100644 --- a/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt +++ b/app/src/androidTest/java/com/akexorcist/localizationapp/DialogWebViewTest.kt @@ -27,7 +27,7 @@ class DialogWebViewTest { @Test fun dialogAndWebView() { - // Japan + // Italy onScreen { buttonDialogWebView { scrollTo() @@ -38,7 +38,7 @@ class DialogWebViewTest { buttonChangeLanguage { click() } } onScreen { - buttonJapanese { click() } + buttonItalian { click() } } onScreen { buttonShowWebsite { click() } @@ -46,7 +46,7 @@ class DialogWebViewTest { onScreen { webViewContent { withElement(Locator.ID, "content") { - hasText(ExpectedContent.HELLO_WORLD_JAPANESE) + hasText(ExpectedContent.HELLO_WORLD_ITALIAN) } } buttonBack { click() } @@ -56,7 +56,7 @@ class DialogWebViewTest { } onScreen { textViewTitle { - hasText(ExpectedContent.HELLO_WORLD_JAPANESE) + hasText(ExpectedContent.HELLO_WORLD_ITALIAN) } } From ced19c1442e7bb277d2240244b1119e4431c78a1 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Mon, 20 Dec 2021 03:12:19 +0700 Subject: [PATCH 6/9] Update device list for UI test --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index a2f7985..59ff23d 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -85,7 +85,7 @@ jobs: --app app-debug/app-debug.apk --test app-debug-androidTest/app-debug-androidTest.apk --device model=redfin,version=30,locale=en,orientation=portrait - --device model=greatlte,version=28,locale=en,orientation=portrait + --device model=greatlteks,version=28,locale=en,orientation=portrait --device model=OnePlus3T,version=26,locale=en,orientation=portrait --device model=HWMHA,version=24,locale=en,orientation=portrait --device model=grandppltedx,version=23,locale=en,orientation=portrait From 108e5a54c37032f99d13dfba64ebec0557240cf0 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Mon, 20 Dec 2021 03:26:57 +0700 Subject: [PATCH 7/9] Update device list for UI test --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 59ff23d..bb2c12e 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -89,4 +89,4 @@ jobs: --device model=OnePlus3T,version=26,locale=en,orientation=portrait --device model=HWMHA,version=24,locale=en,orientation=portrait --device model=grandppltedx,version=23,locale=en,orientation=portrait - --device model=Nexus5,version=21,locale=en,orientation=portrait" + --device model=hwALE-H,version=21,locale=en,orientation=portrait" From 7b78ded893036e9fc4e04b8aa7713c7a63096c58 Mon Sep 17 00:00:00 2001 From: Chatchawan Kotarasu Date: Tue, 21 Dec 2021 12:19:20 +0700 Subject: [PATCH 8/9] fix: WebView crashing on Android 5 *BREAKING CHANGES* - change `targetSdkVersion` from 30 to 31 - change `appcompat` version to `1.4.0` --- app/build.gradle | 2 +- build.gradle | 4 +-- localization/build.gradle | 2 +- .../ui/LocalizationActivity.kt | 29 ++++++++++++++----- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 60ae514..687064f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,7 +49,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'androidx.viewpager:viewpager:1.0.0' implementation 'androidx.preference:preference-ktx:1.1.1' implementation "androidx.viewpager2:viewpager2:1.0.0" diff --git a/build.gradle b/build.gradle index 69f0166..42d8f63 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ buildscript { project.ext { kotlin_version = '1.4.32' - compileSdkVersion = 30 - targetSdkVersion = 30 + compileSdkVersion = 31 + targetSdkVersion = 31 minSdkVersion = 14 versionName = '1.2.10' diff --git a/localization/build.gradle b/localization/build.gradle index 82a9911..9e51a6c 100644 --- a/localization/build.gradle +++ b/localization/build.gradle @@ -29,7 +29,7 @@ task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$project.kotlin_version" - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.0' implementation "androidx.activity:activity-ktx:1.2.2" testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' diff --git a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt index 991130a..354c1f7 100644 --- a/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt +++ b/localization/src/main/java/com/akexorcist/localizationactivity/ui/LocalizationActivity.kt @@ -2,8 +2,8 @@ package com.akexorcist.localizationactivity.ui import android.content.Context import android.content.res.Resources -import android.os.Build import android.os.Bundle +import androidx.annotation.CallSuper import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import com.akexorcist.localizationactivity.core.LocalizationActivityDelegate @@ -30,12 +30,27 @@ abstract class LocalizationActivity : AppCompatActivity, OnLocaleChangedListener } override fun attachBaseContext(newBase: Context) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - applyOverrideConfiguration(localizationDelegate.updateConfigurationLocale(newBase)) - super.attachBaseContext(newBase) - } else { - super.attachBaseContext(localizationDelegate.attachBaseContext(newBase)) - } + super.attachBaseContext(delegateBaseContext(newBase)) + } + + /** + * Get a base context for [attachBaseContext]. You can override this function to wrap this + * context by using ContextWrapper. For example, if your project use ViewPump from + * `io.github.inflationx:viewpump` module ([ViewPump](https://github.com/InflationX/ViewPump)), + * you can override this method to wrap this context with `ViewPumpContextWrapper`. + * ```Kotlin + * override fun delegateBaseContext(context: Context): Context { + * val localizedContext: Context = super.delegateBaseContext(context) + * return ViewPumpContextWrapper.wrap(localizedContext) + * } + * ``` + * @param context a new base context from [attachBaseContext] parameter. + * @return a new base context. By default, it will return + * [LocalizationActivityDelegate.attachBaseContext] + */ + @CallSuper + open fun delegateBaseContext(context: Context): Context { + return localizationDelegate.attachBaseContext(context) } override fun getBaseContext(): Context { From 67c5d422a8e8f9a9300b14c95e6f9e9460377f06 Mon Sep 17 00:00:00 2001 From: Chatchawan Kotarasu Date: Tue, 21 Dec 2021 13:32:46 +0700 Subject: [PATCH 9/9] fix: add jvmTarget 1.8 to localization module --- app/build.gradle | 6 +++--- build.gradle | 2 ++ localization/build.gradle | 8 ++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 687064f..98b650c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,12 +29,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility project.targetJavaVersion + targetCompatibility project.targetJavaVersion } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = project.targetJavaVersion.toString() } buildFeatures { diff --git a/build.gradle b/build.gradle index 42d8f63..5912aa4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,8 @@ buildscript { targetSdkVersion = 31 minSdkVersion = 14 + targetJavaVersion = JavaVersion.VERSION_1_8 + versionName = '1.2.10' versionCode = 10210 diff --git a/localization/build.gradle b/localization/build.gradle index 9e51a6c..864ce4d 100644 --- a/localization/build.gradle +++ b/localization/build.gradle @@ -20,6 +20,14 @@ android { res.srcDirs = ['src/main/res'] } } + + compileOptions { + sourceCompatibility project.targetJavaVersion + targetCompatibility project.targetJavaVersion + } + kotlinOptions { + jvmTarget = project.targetJavaVersion.toString() + } } task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {