diff --git a/.cirrus.yml b/.cirrus.yml index 8b3352a40517..b332dbe70c4d 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -16,10 +16,7 @@ task: matrix: - name: publishable script: - # Temporarily disabling CI on stable to allow using new Flutter features closely - # before a new release. - # TODO(franciscojma): re-enable this - - flutter channel master + - flutter channel stable - ./script/check_publish.sh - name: format install_script: @@ -32,11 +29,7 @@ task: env: matrix: CHANNEL: "master" - # Temporarily disabling CI on stable to allow using new Flutter features closely - # before a new release. - # TODO(amirh): re-enable this - # https://github.com/flutter/flutter/issues/46258 - # CHANNEL: "stable" + CHANNEL: "stable" test_script: # TODO(jackson): Allow web plugins once supported on stable # https://github.com/flutter/flutter/issues/42864 @@ -59,11 +52,7 @@ task: PLUGIN_SHARDING: "--shardIndex 1 --shardCount 2" matrix: CHANNEL: "master" - # Temporarily disabling CI on stable to allow using new Flutter features closely - # before a new release. - # TODO(amirh): re-enable this - # https://github.com/flutter/flutter/issues/46258 - # CHANNEL: "stable" + CHANNEL: "stable" MAPS_API_KEY: ENCRYPTED[596a9f6bca436694625ac50851dc5da6b4d34cba8025f7db5bc9465142e8cd44e15f69e3507787753accebfc4910d550] GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[07586610af1fdfc894e5969f70ef2458341b9b7e9c3b7c4225a663b4a48732b7208a4d91c3b7d45305a6b55fa2a37fc4] script: @@ -130,11 +119,7 @@ task: PLUGIN_SHARDING: "--shardIndex 3 --shardCount 4" matrix: CHANNEL: "master" - # Temporarily disabling CI on stable to allow using new Flutter features closely - # before a new release. - # TODO(amirh): re-enable this - # https://github.com/flutter/flutter/issues/46258 - # CHANNEL: "stable" + CHANNEL: "stable" SIMCTL_CHILD_MAPS_API_KEY: ENCRYPTED[596a9f6bca436694625ac50851dc5da6b4d34cba8025f7db5bc9465142e8cd44e15f69e3507787753accebfc4910d550] build_script: # TODO(jackson): Allow web plugins once supported on stable diff --git a/packages/battery/CHANGELOG.md b/packages/battery/CHANGELOG.md index 64ccd1cb641e..ac419795c0e3 100644 --- a/packages/battery/CHANGELOG.md +++ b/packages/battery/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.1+7 + +* Clean up various Android workarounds no longer needed after framework v1.12. + ## 0.3.1+6 * Remove the deprecated `author:` field from pubspec.yaml diff --git a/packages/battery/android/build.gradle b/packages/battery/android/build.gradle index ecd2e1cbb2c8..ff485fbc6b29 100644 --- a/packages/battery/android/build.gradle +++ b/packages/battery/android/build.gradle @@ -32,29 +32,3 @@ android { disable 'InvalidPackage' } } - -// TODO(amirh): Remove this hack once androidx.lifecycle is included on stable. https://github.com/flutter/flutter/issues/42348 -afterEvaluate { - def containsEmbeddingDependencies = false - for (def configuration : configurations.all) { - for (def dependency : configuration.dependencies) { - if (dependency.group == 'io.flutter' && - dependency.name.startsWith('flutter_embedding') && - dependency.isTransitive()) - { - containsEmbeddingDependencies = true - break - } - } - } - if (!containsEmbeddingDependencies) { - android { - dependencies { - def lifecycle_version = "1.1.1" - compileOnly "android.arch.lifecycle:runtime:$lifecycle_version" - compileOnly "android.arch.lifecycle:common:$lifecycle_version" - compileOnly "android.arch.lifecycle:common-java8:$lifecycle_version" - } - } - } -} diff --git a/packages/battery/android/src/main/java/io/flutter/plugins/battery/BatteryPlugin.java b/packages/battery/android/src/main/java/io/flutter/plugins/battery/BatteryPlugin.java index 1bf3c249552d..c17cfc133176 100644 --- a/packages/battery/android/src/main/java/io/flutter/plugins/battery/BatteryPlugin.java +++ b/packages/battery/android/src/main/java/io/flutter/plugins/battery/BatteryPlugin.java @@ -39,8 +39,7 @@ public static void registerWith(PluginRegistry.Registrar registrar) { @Override public void onAttachedToEngine(FlutterPluginBinding binding) { - onAttachedToEngine( - binding.getApplicationContext(), binding.getFlutterEngine().getDartExecutor()); + onAttachedToEngine(binding.getApplicationContext(), binding.getBinaryMessenger()); } private void onAttachedToEngine(Context applicationContext, BinaryMessenger messenger) { diff --git a/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/MainActivityTest.java b/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java similarity index 66% rename from packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/MainActivityTest.java rename to packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java index 16165ad2e66f..1986d0a55c32 100644 --- a/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/MainActivityTest.java +++ b/packages/battery/example/android/app/src/androidTest/java/io/flutter/plugins/battery/FlutterActivityTest.java @@ -6,10 +6,12 @@ import androidx.test.rule.ActivityTestRule; import dev.flutter.plugins.e2e.FlutterRunner; +import io.flutter.embedding.android.FlutterActivity; import org.junit.Rule; import org.junit.runner.RunWith; @RunWith(FlutterRunner.class) -public class MainActivityTest { - @Rule public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class); +public class FlutterActivityTest { + @Rule + public ActivityTestRule rule = new ActivityTestRule<>(FlutterActivity.class); } diff --git a/packages/battery/example/android/app/src/main/AndroidManifest.xml b/packages/battery/example/android/app/src/main/AndroidManifest.xml index e76af9c8dbfe..d44a8ac5757a 100644 --- a/packages/battery/example/android/app/src/main/AndroidManifest.xml +++ b/packages/battery/example/android/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ - + diff --git a/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/EmbedderV1Activity.java b/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/EmbedderV1Activity.java index f04a2e2ca2f9..7ccc9c1e2fd3 100644 --- a/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/EmbedderV1Activity.java +++ b/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/EmbedderV1Activity.java @@ -5,13 +5,15 @@ package io.flutter.plugins.batteryexample; import android.os.Bundle; +import dev.flutter.plugins.e2e.E2EPlugin; import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; +import io.flutter.plugins.battery.BatteryPlugin; public class EmbedderV1Activity extends FlutterActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); + BatteryPlugin.registerWith(registrarFor("io.flutter.plugins.battery.BatteryPlugin")); + E2EPlugin.registerWith(registrarFor("dev.flutter.plugins.e2e.E2EPlugin")); } } diff --git a/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/MainActivity.java b/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/MainActivity.java deleted file mode 100644 index 26ae8ecc2091..000000000000 --- a/packages/battery/example/android/app/src/main/java/io/flutter/plugins/batteryexample/MainActivity.java +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package io.flutter.plugins.batteryexample; - -import io.flutter.embedding.android.FlutterActivity; -import io.flutter.embedding.engine.FlutterEngine; -import io.flutter.plugins.battery.BatteryPlugin; - -public class MainActivity extends FlutterActivity { - @Override - public void configureFlutterEngine(FlutterEngine flutterEngine) { - flutterEngine.getPlugins().add(new BatteryPlugin()); - } -} diff --git a/packages/battery/pubspec.yaml b/packages/battery/pubspec.yaml index 615f6edaf0bc..48011fc60f13 100644 --- a/packages/battery/pubspec.yaml +++ b/packages/battery/pubspec.yaml @@ -2,7 +2,7 @@ name: battery description: Flutter plugin for accessing information about the battery state (full, charging, discharging) on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/battery -version: 0.3.1+6 +version: 0.3.1+7 flutter: plugin: diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 8e5aa4581196..5754ef407879 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,3 +1,11 @@ +## 4.1.2 + +* Added a new error code `network_error`, and return it when a network error occurred. + +## 4.1.1 + +* Support passing `clientId` to the web plugin programmatically. + ## 4.1.0 * Support web by default. diff --git a/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java b/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java index d2fc260c7b1c..6c9bedde1038 100755 --- a/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java +++ b/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java @@ -173,6 +173,7 @@ public static final class Delegate implements IDelegate, PluginRegistry.Activity // These error codes must match with ones declared on iOS and Dart sides. private static final String ERROR_REASON_SIGN_IN_CANCELED = "sign_in_canceled"; private static final String ERROR_REASON_SIGN_IN_REQUIRED = "sign_in_required"; + private static final String ERROR_REASON_NETWORK_ERROR = "network_error"; private static final String ERROR_REASON_SIGN_IN_FAILED = "sign_in_failed"; private static final String ERROR_FAILURE_TO_RECOVER_AUTH = "failed_to_recover_auth"; private static final String ERROR_USER_RECOVERABLE_AUTH = "user_recoverable_auth"; @@ -372,6 +373,8 @@ private String errorCodeForStatus(int statusCode) { return ERROR_REASON_SIGN_IN_CANCELED; } else if (statusCode == CommonStatusCodes.SIGN_IN_REQUIRED) { return ERROR_REASON_SIGN_IN_REQUIRED; + } else if (statusCode == CommonStatusCodes.NETWORK_ERROR) { + return ERROR_REASON_NETWORK_ERROR; } else { return ERROR_REASON_SIGN_IN_FAILED; } diff --git a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m index 559997f9d621..dff3481ec16f 100644 --- a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m +++ b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m @@ -13,6 +13,7 @@ // These error codes must match with ones declared on Android and Dart sides. static NSString *const kErrorReasonSignInRequired = @"sign_in_required"; static NSString *const kErrorReasonSignInCanceled = @"sign_in_canceled"; +static NSString *const kErrorReasonNetworkError = @"network_error"; static NSString *const kErrorReasonSignInFailed = @"sign_in_failed"; static FlutterError *getFlutterError(NSError *error) { @@ -21,6 +22,8 @@ errorCode = kErrorReasonSignInRequired; } else if (error.code == kGIDSignInErrorCodeCanceled) { errorCode = kErrorReasonSignInCanceled; + } else if ([error.domain isEqualToString:NSURLErrorDomain]) { + errorCode = kErrorReasonNetworkError; } else { errorCode = kErrorReasonSignInFailed; } diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart index a78e92151811..09753377ac76 100644 --- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart +++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart @@ -165,6 +165,7 @@ class GoogleSignIn { this.signInOption = SignInOption.standard, this.scopes = const [], this.hostedDomain, + this.clientId, }); /// Factory for creating default sign in user experience. @@ -194,6 +195,9 @@ class GoogleSignIn { /// user. static const String kSignInCanceledError = 'sign_in_canceled'; + /// Error code indicating network error. Retrying should resolve the problem. + static const String kNetworkError = 'network_error'; + /// Error code indicating that attempt to sign in failed. static const String kSignInFailedError = 'sign_in_failed'; @@ -207,6 +211,9 @@ class GoogleSignIn { /// Domain to restrict sign-in to. final String hostedDomain; + /// Client ID being used to connect to google sign-in. Only supported on web. + final String clientId; + StreamController _currentUserController = StreamController.broadcast(); @@ -240,6 +247,7 @@ class GoogleSignIn { signInOption: signInOption, scopes: scopes, hostedDomain: hostedDomain, + clientId: clientId, )..catchError((dynamic _) { // Invalidate initialization if it errors out. _initialization = null; @@ -309,8 +317,9 @@ class GoogleSignIn { /// /// When [suppressErrors] is set to `false` and an error occurred during sign in /// returned Future completes with [PlatformException] whose `code` can be - /// either [kSignInRequiredError] (when there is no authenticated user) or - /// [kSignInFailedError] (when an unknown error occurred). + /// one of [kSignInRequiredError] (when there is no authenticated user) , + /// [kNetworkError] (when a network error occurred) or [kSignInFailedError] + /// (when an unknown error occurred). Future signInSilently({ bool suppressErrors = true, }) async { diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 45b395f87ce6..a5bd24178289 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -2,7 +2,7 @@ name: google_sign_in description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in -version: 4.1.0 +version: 4.1.2 flutter: plugin: diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md index d9d93ca1e6d2..ffdb367146ae 100644 --- a/packages/in_app_purchase/CHANGELOG.md +++ b/packages/in_app_purchase/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.2+6 + +* Correct a comment. + ## 0.2.2+5 * Update version of json_annotation to ^3.0.0 and json_serializable to ^3.2.0. Resolve conflicts with other packages e.g. flutter_tools from sdk. diff --git a/packages/in_app_purchase/lib/src/in_app_purchase/purchase_details.dart b/packages/in_app_purchase/lib/src/in_app_purchase/purchase_details.dart index d5e8612bd76d..799420972dbe 100644 --- a/packages/in_app_purchase/lib/src/in_app_purchase/purchase_details.dart +++ b/packages/in_app_purchase/lib/src/in_app_purchase/purchase_details.dart @@ -134,7 +134,7 @@ class PurchaseDetails { /// Points back to the `BillingClient`'s [PurchaseWrapper] object that generated this [PurchaseDetails] object. /// - /// This is null on Android. + /// This is null on iOS. final PurchaseWrapper billingClientPurchase; PurchaseDetails({ diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml index a33caf8a08b8..dd94ffd7beed 100644 --- a/packages/in_app_purchase/pubspec.yaml +++ b/packages/in_app_purchase/pubspec.yaml @@ -1,7 +1,7 @@ name: in_app_purchase description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play. homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase -version: 0.2.2+5 +version: 0.2.2+6 dependencies: diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index f3dcd4253846..3bfcd6778c95 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.3.19+1 + +* Raise min Flutter SDK requirement to the latest stable. v2 embedding apps no + longer need to special case their Flutter SDK requirement like they have + since v0.3.15+3. + ## 0.3.19 * Add setting for iOS to allow gesture based navigation. diff --git a/packages/webview_flutter/android/build.gradle b/packages/webview_flutter/android/build.gradle index 2d725840e4c6..893badc0e175 100644 --- a/packages/webview_flutter/android/build.gradle +++ b/packages/webview_flutter/android/build.gradle @@ -37,28 +37,3 @@ android { implementation 'androidx.webkit:webkit:1.0.0' } } - -// TODO(mklim): Remove this hack once androidx.lifecycle is included on stable. https://github.com/flutter/flutter/issues/42348 -afterEvaluate { - def containsEmbeddingDependencies = false - for (def configuration : configurations.all) { - for (def dependency : configuration.dependencies) { - if (dependency.group == 'io.flutter' && - dependency.name.startsWith('flutter_embedding') && - dependency.isTransitive()) - { - containsEmbeddingDependencies = true - break - } - } - } - if (!containsEmbeddingDependencies) { - android { - dependencies { - def lifecycle_version = "1.1.1" - compileOnly "android.arch.lifecycle:common-java8:$lifecycle_version" - compileOnly "android.arch.lifecycle:runtime:$lifecycle_version" - } - } - } -} \ No newline at end of file diff --git a/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java b/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java index a0bd4fe1a7f5..73387b8d1160 100644 --- a/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java +++ b/packages/webview_flutter/example/android/app/src/androidTestDebug/java/io/flutter/plugins/webviewflutterexample/MainActivityTest.java @@ -2,10 +2,12 @@ import androidx.test.rule.ActivityTestRule; import dev.flutter.plugins.e2e.FlutterRunner; +import io.flutter.embedding.android.FlutterActivity; import org.junit.Rule; import org.junit.runner.RunWith; @RunWith(FlutterRunner.class) public class MainActivityTest { - @Rule public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class); + @Rule + public ActivityTestRule rule = new ActivityTestRule<>(FlutterActivity.class); } diff --git a/packages/webview_flutter/example/android/app/src/main/AndroidManifest.xml b/packages/webview_flutter/example/android/app/src/main/AndroidManifest.xml index fd570acc8959..f895f92bd7a4 100644 --- a/packages/webview_flutter/example/android/app/src/main/AndroidManifest.xml +++ b/packages/webview_flutter/example/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,9 @@ android:icon="@mipmap/ic_launcher" android:label="webview_flutter_example" android:name="io.flutter.app.FlutterApplication"> + diff --git a/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1Activity.java b/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1Activity.java index 9b868934cc10..d0f538e89ce3 100644 --- a/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1Activity.java +++ b/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/EmbeddingV1Activity.java @@ -5,13 +5,16 @@ package io.flutter.plugins.webviewflutterexample; import android.os.Bundle; +import dev.flutter.plugins.e2e.E2EPlugin; import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; +import io.flutter.plugins.webviewflutter.WebViewFlutterPlugin; public class EmbeddingV1Activity extends FlutterActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); + E2EPlugin.registerWith(registrarFor("dev.flutter.plugins.e2e.E2EPlugin")); + WebViewFlutterPlugin.registerWith( + registrarFor("io.flutter.plugins.webviewflutter.WebViewFlutterPlugin")); } } diff --git a/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/MainActivity.java b/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/MainActivity.java deleted file mode 100644 index 2f3b7edd3d9f..000000000000 --- a/packages/webview_flutter/example/android/app/src/main/java/io/flutter/plugins/webviewflutterexample/MainActivity.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package io.flutter.plugins.webviewflutterexample; - -import io.flutter.embedding.android.FlutterActivity; -import io.flutter.embedding.engine.FlutterEngine; -import io.flutter.plugins.webviewflutter.WebViewFlutterPlugin; - -/** - * THIS PLUGIN CODE PATH DEPENDS ON A NEWER VERSION OF FLUTTER THAN THE ONE DEFINED IN THE - * PUBSPEC.YAML. Text input will fail on some Android devices unless this is used with at least - * flutter/flutter@1d4d63ace1f801a022ea9ec737bf8c15395588b9. - * - *

Use the V1 embedding as seen in {@link EmbeddingV1Activity} to use this plugin on older - * Flutter versions. - */ -public class MainActivity extends FlutterActivity { - // TODO(mklim): Remove this once v2 of GeneratedPluginRegistrant rolls to stable. https://github.com/flutter/flutter/issues/42694 - @Override - public void configureFlutterEngine(FlutterEngine flutterEngine) { - flutterEngine.getPlugins().add(new WebViewFlutterPlugin()); - } -} diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index 5979ec709f1e..425239e0a06d 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,11 +1,11 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 0.3.19 +version: 0.3.19+1 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: sdk: ">=2.0.0-dev.68.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.12.13+hotfix.5 <2.0.0" dependencies: flutter: