| // Copyright 2014 The Flutter 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 com.flutter.gradle |
| |
| import androidx.annotation.VisibleForTesting |
| import kotlinx.serialization.json.JsonObject |
| import kotlinx.serialization.json.buildJsonObject |
| import kotlinx.serialization.json.put |
| |
| class Deeplink( |
| @VisibleForTesting |
| val scheme: String?, |
| @VisibleForTesting |
| val host: String?, |
| @VisibleForTesting |
| val path: String?, |
| @VisibleForTesting |
| val intentFilterCheck: IntentFilterCheck |
| ) { |
| // TODO(gmackall): This behavior was kept identical to the original Groovy behavior as part of |
| // the Groovy->Kotlin conversion, but should be changed once the conversion is complete. |
| override fun equals(other: Any?): Boolean { |
| if (other == null) { |
| throw NullPointerException() |
| } |
| if (other.javaClass != javaClass) { |
| return false |
| } |
| val otherAsDeeplink = other as Deeplink |
| return scheme == otherAsDeeplink.scheme && |
| host == otherAsDeeplink.host && |
| path == otherAsDeeplink.path |
| } |
| |
| override fun hashCode(): Int = scheme.hashCode() + host.hashCode() + path.hashCode() |
| |
| fun toJson(): JsonObject = |
| buildJsonObject { |
| put("scheme", scheme) |
| put("host", host) |
| put("path", path) |
| put("intentFilterCheck", intentFilterCheck.toJson()) |
| } |
| } |