/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . compose . foundation . text . selection Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . compose . foundation . G OLD EN _ UI Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . text . Basic Text Ċ import Ġandroidx . compose . foundation . text . Basic TextField Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Composition Local Provider Ċ import Ġandroidx . compose . test utils . assert Again st Gold en Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . platform . test Tag Ċ import Ġandroidx . compose . ui . test . capture To Image Ċ import Ġandroidx . compose . ui . test . center Ċ import Ġandroidx . compose . ui . test . click Ċ import Ġandroidx . compose . ui . test . height Ċ import Ġandroidx . compose . ui . test . junit 4 . create Compose Rule Ċ import Ġandroidx . compose . ui . test . long Click Ċ import Ġandroidx . compose . ui . test . on Node With Tag Ċ import Ġandroidx . compose . ui . test . on Node With Text Ċ import Ġandroidx . compose . ui . test . perform Gesture Ċ import Ġandroidx . compose . ui . test . width Ċ import Ġandroidx . compose . ui . text . style . Resolved Text Direction Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Fl aky Test Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġandroidx . test . filters . Sdk Suppress Ċ import Ġandroidx . test . screenshot . Android X Screenshot Test Rule Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ /** Ċ Ġ* ĠScreen shot Ġtest Ġfor Ġ[ Text Selection Colors ] Ġused Ġby Ġthe Ġselection Ġhandle Ġ/ Ġbackground . Ċ Ġ* Ċ Ġ* ĠNote : Ġbecause Ġwe Ġcannot Ġscreenshot Ġpop ups , Ġwe Ġcannot Ġsee Ġthe Ġselection Ġhandles Ġin Ġthe Ġpopup , Ċ Ġ* Ġso Ġinstead Ġwe Ġjust Ġdraw Ġthem Ġmanually Ġso Ġwe Ġcan Ġat Ġleast Ġcompare Ġthe Ġshape Ġand Ġcolor . Ċ Ġ*/ Ċ @ Large Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Sdk Suppress ( min Sdk Version Ġ= ĠBuild . VERSION _ CODES . O ) Ċ class ĠText Selection Colors Screenshot Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= Ġcreate Compose Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġscreenshot Rule Ġ= ĠAndroid X Screenshot Test Rule ( G OLD EN _ UI ) ĊĊĠĠĠ Ġ@ Fl aky Test ( bug Id Ġ= Ġ 1 7 9 7 7 0 4 4 3 ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext _ default Selection Colors () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Test Content ( text Selection Colors Ġ= ĠLocal Text Selection Colors . current ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Click ( center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Again st Gold en ( screenshot Rule , Ġ" text _ default Selection Colors ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Fl aky Test ( bug Id Ġ= Ġ 1 7 9 7 7 0 4 4 3 ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext _ custom Selection Colors () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Test Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Selection Colors Ġ= ĠText Selection Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Color Ġ= ĠColor ( 0 xFFFF B 7 B 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor ( 0 xFF B 5 E AD 7 ). copy ( alpha Ġ= Ġ 0 . 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Click ( center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Again st Gold en ( screenshot Rule , Ġ" text _ custom Selection Colors ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Fl aky Test ( bug Id Ġ= Ġ 1 7 9 7 7 0 4 4 3 ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext Field _ default Selection Colors () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTextField Test Content ( text Selection Colors Ġ= ĠLocal Text Selection Colors . current ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġonce Ġto Ġfocus Ġtext Ġfield ĊĠĠĠĠĠĠĠ Ġrule . on Node With Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĊĠĠĠĠĠĠĠ Ġ// ĠLong Ġclick Ġto Ġstart Ġtext Ġselection ĊĠĠĠĠĠĠĠ Ġrule . on Node With Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Click ( Offset ( width Ġ/ Ġ 5 f , Ġheight Ġ/ Ġ 2 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Again st Gold en ( screenshot Rule , Ġ" textField _ default Selection Colors ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtext Field _ custom Selection Colors () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTextField Test Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Selection Colors Ġ= ĠText Selection Colors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Color Ġ= ĠColor ( 0 xFFFF B 7 B 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor ( 0 xFF B 5 E AD 7 ). copy ( alpha Ġ= Ġ 0 . 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġonce Ġto Ġfocus Ġtext Ġfield ĊĠĠĠĠĠĠĠ Ġrule . on Node With Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĊĠĠĠĠĠĠĠ Ġ// ĠLong Ġclick Ġto Ġstart Ġtext Ġselection ĊĠĠĠĠĠĠĠ Ġrule . on Node With Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Click ( Offset ( width Ġ/ Ġ 5 f , Ġheight Ġ/ Ġ 2 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrule . waitFor Idle () ĊĊĠĠĠĠĠĠĠ Ġrule . on Node With Tag ( Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. capture To Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Again st Gold en ( screenshot Rule , Ġ" textField _ custom Selection Colors ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠText Test Content ( text Selection Colors : ĠText Selection Colors ) Ġ{ ĊĠĠĠ ĠComp osition Local Provider ( Local Text Selection Colors Ġprovides Ġtext Selection Colors ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( Modifier . test Tag ( Tag ), Ġhorizontal Arrange ment Ġ= ĠArrange ment . spaced By ( 2 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMan ually Ġdraw Ġselection Ġhandles Ġas Ġwe Ġcannot Ġscreenshot Ġthe Ġones Ġdrawn Ġin Ġthe Ġpopup ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Selection Handle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Start Handle Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Ġ= ĠResolved Text Direction . L tr Ġto ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSelection Container Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBasic Text ( Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Selection Handle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Start Handle Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirections Ġ= ĠResolved Text Direction . L tr Ġto ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠTextField Test Content ( text Selection Colors : ĠText Selection Colors ) Ġ{ ĊĠĠĠ ĠComp osition Local Provider ( Local Text Selection Colors Ġprovides Ġtext Selection Colors ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( Modifier . test Tag ( Tag )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBasic TextField ( value Ġ= ĠText , Ġon Value Change Ġ= Ġ{}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠText Ġ= Ġ" Selected Ġtext " Ċ private Ġconst Ġval ĠTag Ġ= Ġ" Test Tag " Ċ