package Ġap pt ent ive . com . android . feedback . link Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġap pt ent ive . com . android . feedback . eng agement . Eng agement Context Ċ import Ġap pt ent ive . com . android . feedback . eng agement . Event Ċ import Ġap pt ent ive . com . android . feedback . platform . try Start Activity Ċ Ċ internal Ġobject ĠLink Navigator Ġ{ ĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġnavigate ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠEng agement Context , ĊĠĠĠĠĠĠĠ Ġactivity Context : ĠContext , ĊĠĠĠĠĠĠĠ Ġinteraction : ĠNavigate To Link Interaction ĊĠĠĠ Ġ) Ġ= Ġnavigate ( ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠ Ġinteraction Ġ= Ġinteraction ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Context . try Start Activity ( interaction . create Intent ()) Ġ// Ġthis Ġway Ġwe Ġcan Ġuse Ġunit - tests ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġnavigate ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠEng agement Context , ĊĠĠĠĠĠĠĠ Ġinteraction : ĠNavigate To Link Interaction , ĊĠĠĠĠĠĠĠ Ġactivity Launcher : Ġ() Ġ-> ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġactivity Launcher . invoke () ĊĠĠĠĠĠĠĠ Ġcontext . exec utors . state . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ URL Ġto Ġinteraction . url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ TARGET Ġto Ġinteraction . target , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ SUCCESS Ġto Ġsuccess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . eng age ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Ġ= ĠEvent . internal ( CODE _ POINT _ NAV IG ATE , Ġinteraction . type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteraction Id Ġ= Ġinteraction . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ URL Ġ= Ġ" url " ĊĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ TARGET Ġ= Ġ" target " ĊĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ SUCCESS Ġ= Ġ" success " ĊĠĠĠ Ġprivate Ġconst Ġval ĠCODE _ POINT _ NAV IG ATE Ġ= Ġ" navigate " Ċ } Ċ Ċ @ Visible ForTesting Ċ internal Ġfun ĠNavigate To Link Interaction . create Intent (): ĠIntent Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( url )) ĊĠĠĠ Ġif Ġ( target Ġ== ĠNavigate To Link Interaction . Target . new ) Ġ{ ĊĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġintent Ċ } Ċ