.class public final Lorg/apache/http/conn/util/PublicSuffixMatcher; .super Ljava/lang/Object; .source "PublicSuffixMatcher.java" # instance fields .field private final exceptions:Ljava/util/Map; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Map<", "Ljava/lang/String;", "Lorg/apache/http/conn/util/DomainType;", ">;" } .end annotation .end field .field private final rules:Ljava/util/Map; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Map<", "Ljava/lang/String;", "Lorg/apache/http/conn/util/DomainType;", ">;" } .end annotation .end field # direct methods .method public constructor (Ljava/util/Collection;)V .registers 7 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Collection<", "Lorg/apache/http/conn/util/PublicSuffixList;", ">;)V" } .end annotation .line 82 invoke-direct {p0}, Ljava/lang/Object;->()V .line 83 const-string v0, "Domain suffix lists" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 84 new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V iput-object v0, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->rules:Ljava/util/Map; .line 85 new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V iput-object v0, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->exceptions:Ljava/util/Map; .line 86 invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object p1 :cond_1a invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_60 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Lorg/apache/http/conn/util/PublicSuffixList; .line 87 invoke-virtual {v0}, Lorg/apache/http/conn/util/PublicSuffixList;->getType()Lorg/apache/http/conn/util/DomainType; move-result-object v1 .line 88 invoke-virtual {v0}, Lorg/apache/http/conn/util/PublicSuffixList;->getRules()Ljava/util/List; move-result-object v2 .line 89 invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v2 :goto_32 invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z move-result v3 if-eqz v3, :cond_44 invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v3 check-cast v3, Ljava/lang/String; .line 90 iget-object v4, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->rules:Ljava/util/Map; invoke-interface {v4, v3, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_32 .line 92 :cond_44 invoke-virtual {v0}, Lorg/apache/http/conn/util/PublicSuffixList;->getExceptions()Ljava/util/List; move-result-object v0 if-eqz v0, :cond_1a .line 94 invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v0 :goto_4e invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_1a invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 check-cast v2, Ljava/lang/String; .line 95 iget-object v3, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->exceptions:Ljava/util/Map; invoke-interface {v3, v2, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_4e :cond_60 return-void .end method .method public constructor (Ljava/util/Collection;Ljava/util/Collection;)V .registers 4 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Collection<", "Ljava/lang/String;", ">;", "Ljava/util/Collection<", "Ljava/lang/String;", ">;)V" } .end annotation .line 57 sget-object v0, Lorg/apache/http/conn/util/DomainType;->UNKNOWN:Lorg/apache/http/conn/util/DomainType; invoke-direct {p0, v0, p1, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->(Lorg/apache/http/conn/util/DomainType;Ljava/util/Collection;Ljava/util/Collection;)V return-void .end method .method public constructor (Lorg/apache/http/conn/util/DomainType;Ljava/util/Collection;Ljava/util/Collection;)V .registers 6 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lorg/apache/http/conn/util/DomainType;", "Ljava/util/Collection<", "Ljava/lang/String;", ">;", "Ljava/util/Collection<", "Ljava/lang/String;", ">;)V" } .end annotation .line 64 invoke-direct {p0}, Ljava/lang/Object;->()V .line 65 const-string v0, "Domain type" invoke-static {p1, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 66 const-string v0, "Domain suffix rules" invoke-static {p2, v0}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 67 new-instance v0, Ljava/util/concurrent/ConcurrentHashMap; invoke-interface {p2}, Ljava/util/Collection;->size()I move-result v1 invoke-direct {v0, v1}, Ljava/util/concurrent/ConcurrentHashMap;->(I)V iput-object v0, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->rules:Ljava/util/Map; .line 68 invoke-interface {p2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object p2 :goto_1c invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_2e invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/lang/String; .line 69 iget-object v1, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->rules:Ljava/util/Map; invoke-interface {v1, v0, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_1c .line 71 :cond_2e new-instance p2, Ljava/util/concurrent/ConcurrentHashMap; invoke-direct {p2}, Ljava/util/concurrent/ConcurrentHashMap;->()V iput-object p2, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->exceptions:Ljava/util/Map; if-eqz p3, :cond_4d .line 73 invoke-interface {p3}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object p2 :goto_3b invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z move-result p3 if-eqz p3, :cond_4d invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object p3 check-cast p3, Ljava/lang/String; .line 74 iget-object v0, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->exceptions:Ljava/util/Map; invoke-interface {v0, p3, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_3b :cond_4d return-void .end method .method private static hasEntry(Ljava/util/Map;Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z .registers 4 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Map<", "Ljava/lang/String;", "Lorg/apache/http/conn/util/DomainType;", ">;", "Ljava/lang/String;", "Lorg/apache/http/conn/util/DomainType;", ")Z" } .end annotation const/4 v0, 0x0 if-nez p0, :cond_4 return v0 .line 105 :cond_4 invoke-interface {p0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p0 check-cast p0, Lorg/apache/http/conn/util/DomainType; if-nez p0, :cond_d return v0 :cond_d if-eqz p2, :cond_15 .line 109 invoke-virtual {p0, p2}, Lorg/apache/http/conn/util/DomainType;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_16 :cond_15 const/4 v0, 0x1 :cond_16 return v0 .end method .method private hasException(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z .registers 4 .line 118 iget-object v0, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->exceptions:Ljava/util/Map; invoke-static {v0, p1, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->hasEntry(Ljava/util/Map;Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z move-result p1 return p1 .end method .method private hasRule(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z .registers 4 .line 114 iget-object v0, p0, Lorg/apache/http/conn/util/PublicSuffixMatcher;->rules:Ljava/util/Map; invoke-static {v0, p1, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->hasEntry(Ljava/util/Map;Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z move-result p1 return p1 .end method # virtual methods .method public getDomainRoot(Ljava/lang/String;)Ljava/lang/String; .registers 3 const/4 v0, 0x0 .line 129 invoke-virtual {p0, p1, v0}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->getDomainRoot(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Ljava/lang/String; move-result-object p1 return-object p1 .end method .method public getDomainRoot(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Ljava/lang/String; .registers 10 const/4 v0, 0x0 if-nez p1, :cond_4 return-object v0 .line 146 :cond_4 const-string v1, "." invoke-virtual {p1, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v1 if-eqz v1, :cond_d return-object v0 .line 150 :cond_d sget-object v1, Ljava/util/Locale;->ROOT:Ljava/util/Locale; invoke-virtual {p1, v1}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String; move-result-object p1 move-object v1, v0 :goto_14 if-eqz p1, :cond_5e .line 154 invoke-static {p1}, Ljava/net/IDN;->toUnicode(Ljava/lang/String;)Ljava/lang/String; move-result-object v2 invoke-direct {p0, v2, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->hasException(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z move-result v2 if-eqz v2, :cond_21 return-object p1 .line 158 :cond_21 invoke-static {p1}, Ljava/net/IDN;->toUnicode(Ljava/lang/String;)Ljava/lang/String; move-result-object v2 invoke-direct {p0, v2, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->hasRule(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z move-result v2 if-eqz v2, :cond_2c goto :goto_5e :cond_2c const/16 v2, 0x2e .line 162 invoke-virtual {p1, v2}, Ljava/lang/String;->indexOf(I)I move-result v2 const/4 v3, -0x1 if-eq v2, v3, :cond_3c add-int/lit8 v4, v2, 0x1 .line 163 invoke-virtual {p1, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v4 goto :goto_3d :cond_3c move-object v4, v0 :goto_3d if-eqz v4, :cond_59 .line 166 new-instance v5, Ljava/lang/StringBuilder; const-string v6, "*." invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-static {v4}, Ljava/net/IDN;->toUnicode(Ljava/lang/String;)Ljava/lang/String; move-result-object v6 invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v5 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v5 invoke-direct {p0, v5, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->hasRule(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z move-result v5 if-eqz v5, :cond_59 goto :goto_5e :cond_59 if-eq v2, v3, :cond_5c move-object v1, p1 :cond_5c move-object p1, v4 goto :goto_14 :cond_5e :goto_5e return-object v1 .end method .method public matches(Ljava/lang/String;)Z .registers 3 const/4 v0, 0x0 .line 182 invoke-virtual {p0, p1, v0}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->matches(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z move-result p1 return p1 .end method .method public matches(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Z .registers 6 const/4 v0, 0x0 if-nez p1, :cond_4 return v0 .line 198 :cond_4 const-string v1, "." invoke-virtual {p1, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v1 const/4 v2, 0x1 if-eqz v1, :cond_11 invoke-virtual {p1, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object p1 :cond_11 invoke-virtual {p0, p1, p2}, Lorg/apache/http/conn/util/PublicSuffixMatcher;->getDomainRoot(Ljava/lang/String;Lorg/apache/http/conn/util/DomainType;)Ljava/lang/String; move-result-object p1 if-nez p1, :cond_18 move v0, v2 :cond_18 return v0 .end method