Remove-binary-blob-integrations.patch 225 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968
  1. From: Wengling Chen <feiyu2817@gmail.com>
  2. Date: Sat, 2 Nov 2019 09:22:31 +0100
  3. Subject: Remove binary blob integrations
  4. Remove dependency on com.google.android.gms.auth
  5. kill GCM
  6. Remove dependency on com.google.android.gcm
  7. Remove dependency on com.google.android.gms.gcm
  8. It also disables Snippets, auto-update of offline pages and launching browser from background service.
  9. The snippets are already disabled in native codes, this will disable it on Java level.
  10. Remove dependency on com.google.android.play
  11. Remove dependency on vision, clearcut and phenotype
  12. Remove dependency on flags, places and stats
  13. Remove dependency on fido, iid, instantapps, location
  14. Remove dependency on com.google.android.gms.cast
  15. Remove dependency on auth, signin, dynamic and tasks
  16. Remove google_services_gcm
  17. Parts of this patch were developed by csagan5, uazo and others.
  18. ---
  19. ...em_webview_bundle.AndroidManifest.expected | 6 -
  20. chrome/android/BUILD.gn | 36 --
  21. chrome/android/chrome_java_sources.gni | 8 -
  22. chrome/android/java/AndroidManifest.xml | 78 ----
  23. .../org/chromium/chrome/browser/AppHooks.java | 14 +-
  24. .../browser/PlayServicesVersionInfo.java | 12 +-
  25. .../ChromeBackgroundTaskFactory.java | 3 -
  26. .../component_updater/UpdateScheduler.java | 1 -
  27. .../ExternalNavigationDelegateImpl.java | 8 +-
  28. .../gcore/ChromeGoogleApiClientImpl.java | 25 +-
  29. .../browser/gcore/GoogleApiClientHelper.java | 82 +----
  30. .../instantapps/InstantAppsHandler.java | 56 ---
  31. .../browser/language/AppLocaleUtils.java | 32 +-
  32. .../browser/omaha/UpdateStatusProvider.java | 10 +-
  33. .../inline/FakeAppUpdateManagerWrapper.java | 60 +--
  34. .../inline/InlineUpdateControllerFactory.java | 16 -
  35. .../inline/PlayInlineUpdateController.java | 226 +-----------
  36. .../settings/PasswordSettings.java | 14 -
  37. .../services/gcm/GCMBackgroundTask.java | 1 -
  38. .../browser/webauth/AuthenticatorImpl.java | 29 +-
  39. .../modules/chrome_feature_modules.gni | 3 -
  40. .../browser/signin/services/android/BUILD.gn | 1 -
  41. chrome/test/android/BUILD.gn | 2 -
  42. components/background_task_scheduler/BUILD.gn | 6 -
  43. .../internal/BUILD.gn | 10 -
  44. .../BackgroundTaskGcmTaskService.java | 160 --------
  45. ...ackgroundTaskSchedulerFactoryInternal.java | 6 +-
  46. ...kgroundTaskSchedulerGcmNetworkManager.java | 257 -------------
  47. components/externalauth/android/BUILD.gn | 3 -
  48. .../externalauth/ExternalAuthUtils.java | 18 +-
  49. .../UserRecoverableErrorHandler.java | 7 -
  50. components/gcm_driver/android/BUILD.gn | 1 -
  51. .../gcm_driver/instance_id/android/BUILD.gn | 3 -
  52. .../instance_id/InstanceIDBridge.java | 49 +--
  53. .../instance_id/InstanceIDWithSubtype.java | 26 +-
  54. .../media_router/browser/android/BUILD.gn | 9 -
  55. .../media_router/BrowserMediaRouter.java | 18 +-
  56. .../media_router/CastSessionUtil.java | 35 --
  57. .../components/media_router/MediaSink.java | 44 +--
  58. .../media_router/MediaStatusBridge.java | 40 +-
  59. .../caf/BaseNotificationController.java | 46 ---
  60. .../caf/BaseSessionController.java | 100 +----
  61. .../caf/CafBaseMediaRouteProvider.java | 103 +-----
  62. .../caf/CafMediaRouteProvider.java | 16 -
  63. .../media_router/caf/CafMessageHandler.java | 97 +----
  64. .../media_router/caf/CastMediaSource.java | 10 +-
  65. .../media_router/caf/CastOptionsProvider.java | 22 +-
  66. .../caf/CastSessionController.java | 84 -----
  67. .../media_router/caf/CastUtils.java | 8 -
  68. .../CafExpandedControllerActivity.java | 33 +-
  69. .../CafRemotingMediaRouteProvider.java | 2 +-
  70. .../remoting/FlingingControllerAdapter.java | 74 ----
  71. .../caf/remoting/RemotingMediaSource.java | 8 +-
  72. .../remoting/RemotingSessionController.java | 26 --
  73. .../test/android/cast_emulator/BUILD.gn | 1 -
  74. components/module_installer/android/BUILD.gn | 2 -
  75. .../signin/core/browser/android/BUILD.gn | 3 -
  76. .../signin/GmsAvailabilityException.java | 4 +-
  77. .../signin/SystemAccountManagerDelegate.java | 21 +-
  78. components/sync/android/BUILD.gn | 1 -
  79. content/public/android/BUILD.gn | 4 -
  80. content/public/common/content_features.cc | 2 +-
  81. content/test/BUILD.gn | 4 -
  82. device/BUILD.gn | 3 -
  83. remoting/android/client_java_tmpl.gni | 3 -
  84. services/BUILD.gn | 9 -
  85. services/device/geolocation/BUILD.gn | 3 -
  86. .../geolocation/LocationProviderGmsCore.java | 102 +-----
  87. services/shape_detection/BUILD.gn | 4 -
  88. .../shape_detection/BarcodeDetectionImpl.java | 114 +-----
  89. .../BarcodeDetectionProviderImpl.java | 31 +-
  90. .../FaceDetectionImplGmsCore.java | 30 +-
  91. .../shape_detection/TextDetectionImpl.java | 24 +-
  92. third_party/android_deps/BUILD.gn | 344 +-----------------
  93. .../gms/ChromiumPlayServicesAvailability.java | 10 +-
  94. third_party/android_sdk/BUILD.gn | 3 -
  95. third_party/google_android_play_core/BUILD.gn | 5 -
  96. 77 files changed, 85 insertions(+), 2686 deletions(-)
  97. delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
  98. delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
  99. diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
  100. --- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
  101. +++ b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
  102. @@ -25,11 +25,6 @@
  103. android:multiArch="true"
  104. android:name="org.chromium.android_webview.nonembedded.WebViewApkApplication"
  105. android:use32bitAbi="true">
  106. - <activity # DIFF-ANCHOR: ea1a94af
  107. - android:exported="false"
  108. - android:name="com.google.android.gms.common.api.GoogleApiActivity"
  109. - android:theme="@android:style/Theme.Translucent.NoTitleBar">
  110. - </activity> # DIFF-ANCHOR: ea1a94af
  111. <activity # DIFF-ANCHOR: a4438884
  112. android:exported="true"
  113. android:icon="@drawable/icon_webview"
  114. @@ -65,7 +60,6 @@
  115. android:visibleToInstantApps="true">
  116. </activity-alias> # DIFF-ANCHOR: b7cc06e9
  117. <meta-data android:name="$PACKAGE.WebViewLibrary" android:value="libwebviewchromium.so"/>
  118. - <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
  119. <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" android:value="0"/>
  120. <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" android:value="40"/>
  121. <provider # DIFF-ANCHOR: a5e78e63
  122. diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
  123. --- a/chrome/android/BUILD.gn
  124. +++ b/chrome/android/BUILD.gn
  125. @@ -276,20 +276,10 @@ android_library("chrome_java") {
  126. ":partner_location_descriptor_proto_java",
  127. ":update_proto_java",
  128. ":usage_stats_proto_java",
  129. - "$google_play_services_package:google_play_services_auth_base_java",
  130. - "$google_play_services_package:google_play_services_base_java",
  131. - "$google_play_services_package:google_play_services_basement_java",
  132. - "$google_play_services_package:google_play_services_cast_framework_java",
  133. - "$google_play_services_package:google_play_services_cast_java",
  134. - "$google_play_services_package:google_play_services_fido_java",
  135. - "$google_play_services_package:google_play_services_gcm_java",
  136. - "$google_play_services_package:google_play_services_iid_java",
  137. - "$google_play_services_package:google_play_services_tasks_java",
  138. "//base:base_java",
  139. "//base:jni_java",
  140. "//cc:cc_java",
  141. "//chrome/android/features/keyboard_accessory:public_java",
  142. - "//chrome/android/modules/cablev2_authenticator/public:java",
  143. "//chrome/android/modules/image_editor/provider:java",
  144. "//chrome/android/modules/stack_unwinder/provider:java",
  145. "//chrome/android/webapk/libs/client:client_java",
  146. @@ -522,14 +512,12 @@ android_library("chrome_java") {
  147. "//third_party/android_deps:material_design_java",
  148. "//third_party/android_deps:protobuf_lite_runtime_java",
  149. "//third_party/android_media:android_media_java",
  150. - "//third_party/android_sdk:android_gcm_java",
  151. "//third_party/android_sdk/androidx_browser:androidx_browser_java",
  152. "//third_party/android_swipe_refresh:android_swipe_refresh_java",
  153. "//third_party/blink/public:blink_headers_java",
  154. "//third_party/blink/public/mojom:android_mojo_bindings_java",
  155. "//third_party/blink/public/mojom:mojom_platform_java",
  156. "//third_party/gif_player:gif_player_java",
  157. - "//third_party/google_android_play_core:com_google_android_play_core_java",
  158. "//third_party/metrics_proto:metrics_proto_java",
  159. "//ui/android:ui_java",
  160. "//ui/base/mojom:mojom_java",
  161. @@ -785,11 +773,6 @@ junit_binary("chrome_junit_tests") {
  162. ":chrome_app_java_resources",
  163. ":chrome_java",
  164. ":partner_location_descriptor_proto_java",
  165. - "$google_play_services_package:google_play_services_base_java",
  166. - "$google_play_services_package:google_play_services_basement_java",
  167. - "$google_play_services_package:google_play_services_cast_framework_java",
  168. - "$google_play_services_package:google_play_services_cast_java",
  169. - "$google_play_services_package:google_play_services_fido_java",
  170. "//base:base_java",
  171. "//base:base_java_test_support",
  172. "//base:base_junit_test_support",
  173. @@ -1030,14 +1013,6 @@ android_library("chrome_test_java") {
  174. ":chrome_app_java_resources",
  175. ":chrome_test_util_java",
  176. ":partner_location_descriptor_proto_java",
  177. - "$google_play_services_package:google_play_services_base_java",
  178. - "$google_play_services_package:google_play_services_basement_java",
  179. - "$google_play_services_package:google_play_services_cast_framework_java",
  180. - "$google_play_services_package:google_play_services_cast_java",
  181. - "$google_play_services_package:google_play_services_fido_java",
  182. - "$google_play_services_package:google_play_services_gcm_java",
  183. - "$google_play_services_package:google_play_services_iid_java",
  184. - "$google_play_services_package:google_play_services_tasks_java",
  185. "//base:base_java",
  186. "//base:base_java_test_support",
  187. "//base:jni_java",
  188. @@ -2014,7 +1989,6 @@ android_library("browser_java_test_support") {
  189. ]
  190. deps = [
  191. ":chrome_java",
  192. - "$google_play_services_package:google_play_services_gcm_java",
  193. "//base:base_java",
  194. "//base:base_java_test_support",
  195. "//chrome/browser/profiles/android:java",
  196. @@ -2154,8 +2128,6 @@ android_library("base_monochrome_module_java") {
  197. # enable_chrome_module is true and //chrome code is in a DFM.
  198. android_library("base_module_java") {
  199. sources = [
  200. - "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
  201. - "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
  202. "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
  203. "java/src/org/chromium/chrome/browser/DeferredStartupHandler.java",
  204. "java/src/org/chromium/chrome/browser/base/DexFixer.java",
  205. @@ -2166,8 +2138,6 @@ android_library("base_module_java") {
  206. "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
  207. "java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java",
  208. "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
  209. - "java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java",
  210. - "java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java",
  211. "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java",
  212. "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java",
  213. "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java",
  214. @@ -2196,14 +2166,10 @@ android_library("base_module_java") {
  215. "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
  216. "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java",
  217. "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java",
  218. - "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
  219. - "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java",
  220. - "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
  221. "java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java",
  222. ]
  223. deps = [
  224. ":chrome_base_module_resources",
  225. - "$google_play_services_package:google_play_services_gcm_java",
  226. "//base:base_java",
  227. "//base:jni_java",
  228. "//chrome/browser/download/android:file_provider_java",
  229. @@ -2219,7 +2185,6 @@ android_library("base_module_java") {
  230. "//third_party/android_deps:androidx_annotation_annotation_java",
  231. "//third_party/android_deps:androidx_collection_collection_java",
  232. "//third_party/android_deps:androidx_fragment_fragment_java",
  233. - "//third_party/google_android_play_core:com_google_android_play_core_java",
  234. "//ui/android:ui_no_recycler_view_java",
  235. # Deps needed for child processes.
  236. @@ -2238,7 +2203,6 @@ android_library("base_module_java") {
  237. # Deps to pull services into base module.
  238. # TODO(crbug.com/1126301): Consider moving these to the chrome module to
  239. # reduce base dex size.
  240. - "$google_play_services_package:google_play_services_cast_framework_java",
  241. "//components/background_task_scheduler:background_task_scheduler_java",
  242. "//components/payments/content/android:service_java",
  243. "//third_party/android_sdk/androidx_browser:androidx_browser_java",
  244. diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
  245. --- a/chrome/android/chrome_java_sources.gni
  246. +++ b/chrome/android/chrome_java_sources.gni
  247. @@ -16,7 +16,6 @@ chrome_java_sources = [
  248. "java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java",
  249. "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
  250. "java/src/org/chromium/chrome/browser/ChromeApplication.java",
  251. - "java/src/org/chromium/chrome/browser/ChromeBackgroundServiceImpl.java",
  252. "java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
  253. "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
  254. "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
  255. @@ -1218,10 +1217,6 @@ chrome_java_sources = [
  256. "java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java",
  257. "java/src/org/chromium/chrome/browser/send_tab_to_self/SendTabToSelfShareActivity.java",
  258. "java/src/org/chromium/chrome/browser/services/AccountsChangedReceiver.java",
  259. - "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerServiceImpl.java",
  260. - "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundServiceImpl.java",
  261. - "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java",
  262. - "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
  263. "java/src/org/chromium/chrome/browser/settings/MainSettings.java",
  264. "java/src/org/chromium/chrome/browser/settings/SettingsActivity.java",
  265. "java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java",
  266. @@ -1510,9 +1505,6 @@ chrome_java_sources = [
  267. "java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewBinder.java",
  268. "java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
  269. "java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
  270. - "java/src/org/chromium/chrome/browser/webauth/Fido2ApiHandler.java",
  271. - "java/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequest.java",
  272. - "java/src/org/chromium/chrome/browser/webauth/Fido2Helper.java",
  273. "java/src/org/chromium/chrome/browser/webauth/HandlerResponseCallback.java",
  274. "java/src/org/chromium/chrome/browser/webauth/authenticator/CableAuthenticatorActivity.java",
  275. "java/src/org/chromium/chrome/browser/webshare/ShareServiceImplementationFactory.java",
  276. diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
  277. --- a/chrome/android/java/AndroidManifest.xml
  278. +++ b/chrome/android/java/AndroidManifest.xml
  279. @@ -80,23 +80,18 @@ by a child template that "extends" this file.
  280. <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
  281. <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
  282. <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
  283. - <!-- Only chrome can receive the messages and registration result -->
  284. - <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
  285. - android:protectionLevel="signature" />
  286. <permission android:name="{{ manifest_package }}.permission.DEBUG"
  287. android:label="Debug web pages"
  288. android:protectionLevel="signature" />
  289. <permission android:name="{{ manifest_package }}.permission.TRANSLATE"
  290. android:protectionLevel="signature" />
  291. - <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
  292. <uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
  293. <uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
  294. <uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
  295. <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
  296. <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
  297. - <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
  298. <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  299. {% block extra_uses_permissions %}
  300. @@ -706,16 +701,6 @@ by a child template that "extends" this file.
  301. </intent-filter>
  302. </activity>
  303. - <activity android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity"
  304. - android:theme="@style/Theme.Chromium.Activity"
  305. - android:label="Chrome.CafExpandedControllerActivity"
  306. - android:hardwareAccelerated="true"
  307. - android:launchMode="singleTask"
  308. - android:noHistory="true"
  309. - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
  310. - android:excludeFromRecents="true">
  311. - </activity>
  312. -
  313. <!-- This activity is used to restart the main Chrome process. Should never be exported. -->
  314. <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
  315. android:launchMode="singleInstance"
  316. @@ -779,15 +764,6 @@ by a child template that "extends" this file.
  317. </intent-filter>
  318. </activity>
  319. - <!-- Activity for dispatching intents to Instant Apps. -->
  320. - <activity
  321. - android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity"
  322. - android:exported="false"
  323. - android:theme="@android:style/Theme.NoDisplay"
  324. - android:noHistory="true"
  325. - android:excludeFromRecents="true">
  326. - </activity>
  327. -
  328. <activity
  329. android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity"
  330. android:exported="false"
  331. @@ -926,36 +902,6 @@ by a child template that "extends" this file.
  332. android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
  333. android:hardwareAccelerated="false" />
  334. - <!-- Receiver for GCM messages. -->
  335. - <receiver android:name="com.google.android.gms.gcm.GcmReceiver"
  336. - android:exported="true"
  337. - android:permission="com.google.android.c2dm.permission.SEND">
  338. - <intent-filter>
  339. - <action android:name="com.google.android.c2dm.intent.RECEIVE" />
  340. - <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
  341. - <category android:name="{{ manifest_package }}"/>
  342. - </intent-filter>
  343. - </receiver>
  344. - <!-- GcmTaskService for registration for Invalidations. Not actually implemented anymore. -->
  345. - <service android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService"
  346. - android:exported="true"
  347. - android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
  348. - <intent-filter>
  349. - <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
  350. - </intent-filter>
  351. - </service>
  352. - <!-- GcmListenerService for messages from GCM. -->
  353. - <service android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"
  354. - android:exported="false" >
  355. - <intent-filter>
  356. - <action android:name="com.google.android.c2dm.intent.RECEIVE" />
  357. - </intent-filter>
  358. - </service>
  359. - <service android:name="org.chromium.chrome.browser.services.gcm.GCMBackgroundService"
  360. - android:exported="false"/>
  361. - <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
  362. - android:exported="false"/>
  363. -
  364. <!-- Android Notification service listener -->
  365. <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
  366. android:exported="false"/>
  367. @@ -979,28 +925,10 @@ by a child template that "extends" this file.
  368. android:exported="false"
  369. android:permission="android.permission.BIND_JOB_SERVICE"/>
  370. - <!-- Background Task Scheduler GCM task service -->
  371. - <service android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskGcmTaskService"
  372. - android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
  373. - android:exported="true">
  374. - <intent-filter>
  375. - <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
  376. - </intent-filter>
  377. - </service>
  378. -
  379. <!-- Background Task Scheduler alarm receiver -->
  380. <receiver android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskBroadcastReceiver"
  381. android:exported="false" />
  382. - <!-- GcmTaskService implementation to wake Chrome on scheduled events -->
  383. - <service android:name="org.chromium.chrome.browser.ChromeBackgroundService"
  384. - android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
  385. - android:exported="true">
  386. - <intent-filter>
  387. - <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
  388. - </intent-filter>
  389. - </service>
  390. -
  391. <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
  392. android:exported="true"
  393. tools:ignore="ExportedService" />
  394. @@ -1197,12 +1125,6 @@ by a child template that "extends" this file.
  395. <meta-data android:name="com.google.ar.core" android:value="optional" />
  396. {% endif %}
  397. - <!-- Cast support -->
  398. - <meta-data
  399. - android:name=
  400. - "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
  401. - android:value="org.chromium.components.media_router.caf.CastOptionsProvider"/>
  402. -
  403. <!-- These providers are declared in the base module to give the chrome
  404. split preloader more time to work. -->
  405. <provider android:name="org.chromium.chrome.browser.util.ChromeFileProvider"
  406. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
  407. --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
  408. +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
  409. @@ -10,9 +10,6 @@ import android.content.pm.PackageManager;
  410. import androidx.annotation.Nullable;
  411. import androidx.annotation.VisibleForTesting;
  412. -import com.google.android.gms.common.ConnectionResult;
  413. -import com.google.android.gms.common.GoogleApiAvailability;
  414. -
  415. import org.chromium.base.ContextUtils;
  416. import org.chromium.base.annotations.CalledByNative;
  417. import org.chromium.chrome.browser.banners.AppDetailsDelegate;
  418. @@ -294,16 +291,7 @@ public abstract class AppHooks {
  419. * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
  420. */
  421. public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
  422. - try {
  423. - PackageInfo gmsPackageInfo =
  424. - ContextUtils.getApplicationContext().getPackageManager().getPackageInfo(
  425. - GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, /* flags= */ 0);
  426. - int apkVersion = gmsPackageInfo.versionCode;
  427. - if (apkVersion >= minApkVersion) return ConnectionResult.SUCCESS;
  428. - } catch (PackageManager.NameNotFoundException e) {
  429. - return ConnectionResult.SERVICE_MISSING;
  430. - }
  431. - return ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED;
  432. + return 1; /* SERVICE_MISSING*/
  433. }
  434. /**
  435. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java
  436. --- a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java
  437. +++ b/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java
  438. @@ -7,8 +7,6 @@ package org.chromium.chrome.browser;
  439. import android.content.Context;
  440. import android.content.pm.PackageManager;
  441. -import com.google.android.gms.common.GoogleApiAvailability;
  442. -
  443. import org.chromium.base.ContextUtils;
  444. import org.chromium.base.annotations.CalledByNative;
  445. import org.chromium.components.externalauth.ExternalAuthUtils;
  446. @@ -29,7 +27,7 @@ public class PlayServicesVersionInfo {
  447. public static String getGmsInfo() {
  448. Context context = ContextUtils.getApplicationContext();
  449. - final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
  450. + final long sdkVersion = 12600000;
  451. final long installedGmsVersion = getApkVersionNumber(context);
  452. final String accessType;
  453. @@ -53,12 +51,6 @@ public class PlayServicesVersionInfo {
  454. * package is not found.
  455. */
  456. public static int getApkVersionNumber(Context context) {
  457. - try {
  458. - return context.getPackageManager()
  459. - .getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
  460. - .versionCode;
  461. - } catch (PackageManager.NameNotFoundException e) {
  462. - return 0;
  463. - }
  464. + return 0;
  465. }
  466. }
  467. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java
  468. --- a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java
  469. +++ b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java
  470. @@ -20,7 +20,6 @@ import org.chromium.chrome.browser.offlinepages.OfflineBackgroundTask;
  471. import org.chromium.chrome.browser.offlinepages.prefetch.OfflineNotificationBackgroundTask;
  472. import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchBackgroundTask;
  473. import org.chromium.chrome.browser.omaha.OmahaService;
  474. -import org.chromium.chrome.browser.services.gcm.GCMBackgroundTask;
  475. import org.chromium.chrome.browser.webapps.WebApkUpdateTask;
  476. import org.chromium.components.background_task_scheduler.BackgroundTask;
  477. import org.chromium.components.background_task_scheduler.BackgroundTaskFactory;
  478. @@ -60,8 +59,6 @@ public class ChromeBackgroundTaskFactory implements BackgroundTaskFactory {
  479. switch (taskId) {
  480. case TaskIds.OMAHA_JOB_ID:
  481. return new OmahaService();
  482. - case TaskIds.GCM_BACKGROUND_TASK_JOB_ID:
  483. - return new GCMBackgroundTask();
  484. case TaskIds.OFFLINE_PAGES_BACKGROUND_JOB_ID:
  485. return new OfflineBackgroundTask();
  486. case TaskIds.OFFLINE_PAGES_PREFETCH_JOB_ID:
  487. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
  488. --- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
  489. +++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
  490. @@ -14,7 +14,6 @@ import org.chromium.components.background_task_scheduler.BackgroundTask.TaskFini
  491. import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
  492. import org.chromium.components.background_task_scheduler.TaskIds;
  493. import org.chromium.components.background_task_scheduler.TaskInfo;
  494. -import org.chromium.gms.ChromiumPlayServicesAvailability;
  495. /** Java-side implementation of the component update scheduler using the BackgroundTaskScheduler. */
  496. @JNINamespace("component_updater")
  497. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
  498. --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
  499. +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
  500. @@ -216,12 +216,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
  501. @Override
  502. public void maybeAdjustInstantAppExtras(Intent intent, boolean isIntentToInstantApp) {
  503. - if (isIntentToInstantApp) {
  504. - intent.putExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER, true);
  505. - } else {
  506. - // Make sure this extra is not sent unless we've done the verification.
  507. - intent.removeExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER);
  508. - }
  509. + // Always remove this extra
  510. + intent.removeExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER);
  511. }
  512. @Override
  513. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
  514. --- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
  515. +++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
  516. @@ -6,9 +6,6 @@ package org.chromium.chrome.browser.gcore;
  517. import android.content.Context;
  518. -import com.google.android.gms.common.ConnectionResult;
  519. -import com.google.android.gms.common.api.GoogleApiClient;
  520. -
  521. import org.chromium.base.Log;
  522. import org.chromium.base.TraceEvent;
  523. import org.chromium.components.externalauth.ExternalAuthUtils;
  524. @@ -22,7 +19,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
  525. private static final String TAG = "Icing";
  526. private final Context mApplicationContext;
  527. - private final GoogleApiClient mClient;
  528. private final ExternalAuthUtils mExternalAuthUtils;
  529. /**
  530. @@ -32,10 +28,9 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
  531. * @param requireFirstPartyBuild true if the given client can only be used in a first-party
  532. * build.
  533. */
  534. - public ChromeGoogleApiClientImpl(Context context, GoogleApiClient client,
  535. + public ChromeGoogleApiClientImpl(Context context,
  536. boolean requireFirstPartyBuild) {
  537. mApplicationContext = context.getApplicationContext();
  538. - mClient = client;
  539. mExternalAuthUtils = ExternalAuthUtils.getInstance();
  540. if (requireFirstPartyBuild && !mExternalAuthUtils.isChromeGoogleSigned()) {
  541. throw new IllegalStateException("GoogleApiClient requires first-party build");
  542. @@ -44,7 +39,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
  543. @Override
  544. public void disconnect() {
  545. - mClient.disconnect();
  546. }
  547. @Override
  548. @@ -60,24 +54,11 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
  549. @Override
  550. public boolean connectWithTimeout(long timeout) {
  551. TraceEvent.begin("ChromeGoogleApiClientImpl:connectWithTimeout");
  552. - try {
  553. - ConnectionResult result = mClient.blockingConnect(timeout, TimeUnit.MILLISECONDS);
  554. - if (!result.isSuccess()) {
  555. - Log.e(TAG, "Connection to GmsCore unsuccessful. Error %d", result.getErrorCode());
  556. - } else {
  557. - Log.d(TAG, "Connection to GmsCore successful.");
  558. - }
  559. - return result.isSuccess();
  560. - } finally {
  561. - TraceEvent.end("ChromeGoogleApiClientImpl:connectWithTimeout");
  562. - }
  563. + TraceEvent.end("ChromeGoogleApiClientImpl:connectWithTimeout");
  564. + return false;
  565. }
  566. public Context getApplicationContext() {
  567. return mApplicationContext;
  568. }
  569. -
  570. - public GoogleApiClient getApiClient() {
  571. - return mClient;
  572. - }
  573. }
  574. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
  575. --- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
  576. +++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
  577. @@ -7,11 +7,6 @@ package org.chromium.chrome.browser.gcore;
  578. import android.os.Bundle;
  579. import android.os.Handler;
  580. -import com.google.android.gms.common.ConnectionResult;
  581. -import com.google.android.gms.common.api.GoogleApiClient;
  582. -import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
  583. -import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
  584. -
  585. import org.chromium.base.ApplicationStatus;
  586. import org.chromium.base.ApplicationStatus.ApplicationStateListener;
  587. import org.chromium.base.Log;
  588. @@ -67,29 +62,15 @@ import org.chromium.base.ThreadUtils;
  589. * }
  590. * </pre>
  591. */
  592. -public class GoogleApiClientHelper
  593. - implements OnConnectionFailedListener, ConnectionCallbacks {
  594. +public class GoogleApiClientHelper {
  595. private static final String TAG = "GCore";
  596. private int mResolutionAttempts;
  597. private boolean mWasConnectedBefore;
  598. private final Handler mHandler = new Handler(ThreadUtils.getUiThreadLooper());
  599. - private final GoogleApiClient mClient;
  600. private long mDisconnectionDelayMs;
  601. private Runnable mPendingDisconnect;
  602. - /**
  603. - * Creates a helper and enrolls it in the various connection management features.
  604. - * See the class documentation for {@link GoogleApiClientHelper} for more information.
  605. - *
  606. - * @param client The client to wrap.
  607. - */
  608. - public GoogleApiClientHelper(GoogleApiClient client) {
  609. - mClient = client;
  610. - enableConnectionRetrying(true);
  611. - enableLifecycleManagement(true);
  612. - }
  613. -
  614. /**
  615. * Opts in or out of lifecycle management. The client's connection will be closed and reopened
  616. * when Chrome goes in and out of background.
  617. @@ -116,13 +97,6 @@ public class GoogleApiClientHelper
  618. * Enabling or disabling it while it is already enabled or disabled has no effect.
  619. */
  620. public void enableConnectionRetrying(boolean enabled) {
  621. - if (enabled) {
  622. - mClient.registerConnectionCallbacks(this);
  623. - mClient.registerConnectionFailedListener(this);
  624. - } else {
  625. - mClient.unregisterConnectionCallbacks(this);
  626. - mClient.unregisterConnectionFailedListener(this);
  627. - }
  628. }
  629. /**
  630. @@ -155,21 +129,11 @@ public class GoogleApiClientHelper
  631. // Cancel and reschedule the disconnection if we are in the background. We do it early to
  632. // avoid race conditions between a disconnect on the UI thread and the connect below.
  633. if (!ApplicationStatus.hasVisibleActivities()) scheduleDisconnection();
  634. -
  635. - // The client might be disconnected if we were idle in the background for too long.
  636. - if (!mClient.isConnected() && !mClient.isConnecting()) {
  637. - Log.d(TAG, "Reconnecting the client.");
  638. - mClient.connect();
  639. - }
  640. }
  641. void restoreConnectedState() {
  642. // If we go back to the foreground before a delayed disconnect happens, cancel it.
  643. cancelPendingDisconnection();
  644. -
  645. - if (mWasConnectedBefore) {
  646. - mClient.connect();
  647. - }
  648. }
  649. /**
  650. @@ -192,12 +156,6 @@ public class GoogleApiClientHelper
  651. }
  652. private void disconnect() {
  653. - if (mClient.isConnected() || mClient.isConnecting()) {
  654. - mWasConnectedBefore = true;
  655. - }
  656. -
  657. - // We always call disconnect to abort possibly pending connection requests.
  658. - mClient.disconnect();
  659. }
  660. private void cancelPendingDisconnection() {
  661. @@ -207,43 +165,7 @@ public class GoogleApiClientHelper
  662. mPendingDisconnect = null;
  663. }
  664. - @Override
  665. - public void onConnectionFailed(ConnectionResult result) {
  666. - if (!isErrorRecoverableByRetrying(result.getErrorCode())) {
  667. - Log.d(TAG, "Not retrying managed client connection. Unrecoverable error: %d",
  668. - result.getErrorCode());
  669. - return;
  670. - }
  671. -
  672. - if (mResolutionAttempts < ConnectedTask.RETRY_NUMBER_LIMIT) {
  673. - Log.d(TAG, "Retrying managed client connection. attempt %d/%d - errorCode: %d",
  674. - mResolutionAttempts, ConnectedTask.RETRY_NUMBER_LIMIT, result.getErrorCode());
  675. - mResolutionAttempts += 1;
  676. -
  677. - mHandler.postDelayed(new Runnable() {
  678. - @Override
  679. - public void run() {
  680. - mClient.connect();
  681. - }
  682. - }, ConnectedTask.CONNECTION_RETRY_TIME_MS);
  683. - }
  684. - }
  685. -
  686. - @Override
  687. - public void onConnected(Bundle connectionHint) {
  688. - mResolutionAttempts = 0;
  689. - }
  690. -
  691. - @Override
  692. - public void onConnectionSuspended(int cause) {
  693. - // GoogleApiClient handles retrying on suspension itself. Logging in case it didn't succeed
  694. - // for some reason.
  695. - Log.w(TAG, "Managed client connection suspended. Cause: %d", cause);
  696. - }
  697. -
  698. private static boolean isErrorRecoverableByRetrying(int errorCode) {
  699. - return errorCode == ConnectionResult.INTERNAL_ERROR
  700. - || errorCode == ConnectionResult.NETWORK_ERROR
  701. - || errorCode == ConnectionResult.SERVICE_UPDATING;
  702. + return false;
  703. }
  704. }
  705. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
  706. --- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
  707. +++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
  708. @@ -40,31 +40,9 @@ public class InstantAppsHandler {
  709. // TODO(mariakhomenko): Use system once we roll to O SDK.
  710. private static final int FLAG_DO_NOT_LAUNCH = 0x00000200;
  711. - // TODO(mariakhomenko): Depend directly on the constants once we roll to v8 libraries.
  712. - private static final String DO_NOT_LAUNCH_EXTRA =
  713. - "com.google.android.gms.instantapps.DO_NOT_LAUNCH_INSTANT_APP";
  714. -
  715. - protected static final String IS_REFERRER_TRUSTED_EXTRA =
  716. - "com.google.android.gms.instantapps.IS_REFERRER_TRUSTED";
  717. -
  718. - protected static final String IS_USER_CONFIRMED_LAUNCH_EXTRA =
  719. - "com.google.android.gms.instantapps.IS_USER_CONFIRMED_LAUNCH";
  720. -
  721. - protected static final String TRUSTED_REFERRER_PKG_EXTRA =
  722. - "com.google.android.gms.instantapps.TRUSTED_REFERRER_PKG";
  723. -
  724. public static final String IS_GOOGLE_SEARCH_REFERRER =
  725. "com.google.android.gms.instantapps.IS_GOOGLE_SEARCH_REFERRER";
  726. - private static final String BROWSER_LAUNCH_REASON =
  727. - "com.google.android.gms.instantapps.BROWSER_LAUNCH_REASON";
  728. -
  729. - private static final String SUPERVISOR_PKG = "com.google.android.instantapps.supervisor";
  730. -
  731. - private static final String[] SUPERVISOR_START_ACTIONS = {
  732. - "com.google.android.instantapps.START", "com.google.android.instantapps.nmr1.INSTALL",
  733. - "com.google.android.instantapps.nmr1.VIEW"};
  734. -
  735. /** Finch experiment name. */
  736. private static final String INSTANT_APPS_EXPERIMENT_NAME = "InstantApps";
  737. @@ -93,14 +71,6 @@ public class InstantAppsHandler {
  738. * @return Whether the given intent is going to open an Instant App.
  739. */
  740. public static boolean isIntentToInstantApp(Intent intent) {
  741. - if (SUPERVISOR_PKG.equals(intent.getPackage())) return true;
  742. -
  743. - String intentAction = intent.getAction();
  744. - for (String action : SUPERVISOR_START_ACTIONS) {
  745. - if (action.equals(intentAction)) {
  746. - return true;
  747. - }
  748. - }
  749. return false;
  750. }
  751. @@ -135,20 +105,6 @@ public class InstantAppsHandler {
  752. * @param intent The current intent.
  753. */
  754. private void maybeRecordFallbackStats(Intent intent) {
  755. - Long startTime = IntentUtils.safeGetLongExtra(intent, INSTANT_APP_START_TIME_EXTRA, 0);
  756. - if (startTime > 0) {
  757. - RecordHistogram.recordTimesHistogram("Android.InstantApps.FallbackDuration",
  758. - SystemClock.elapsedRealtime() - startTime);
  759. - intent.removeExtra(INSTANT_APP_START_TIME_EXTRA);
  760. - }
  761. - int callSource = IntentUtils.safeGetIntExtra(intent, BROWSER_LAUNCH_REASON, 0);
  762. - if (callSource > 0 && callSource < SOURCE_BOUNDARY) {
  763. - RecordHistogram.recordEnumeratedHistogram(
  764. - "Android.InstantApps.CallSource", callSource, SOURCE_BOUNDARY);
  765. - intent.removeExtra(BROWSER_LAUNCH_REASON);
  766. - } else if (callSource >= SOURCE_BOUNDARY) {
  767. - Log.e(TAG, "Unexpected call source constant for Instant Apps: " + callSource);
  768. - }
  769. }
  770. /**
  771. @@ -183,14 +139,6 @@ public class InstantAppsHandler {
  772. return false;
  773. }
  774. - if (IntentUtils.safeGetBooleanExtra(intent, DO_NOT_LAUNCH_EXTRA, false)
  775. - || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
  776. - && (intent.getFlags() & FLAG_DO_NOT_LAUNCH) != 0)) {
  777. - maybeRecordFallbackStats(intent);
  778. - Log.i(TAG, "Not handling with Instant Apps (DO_NOT_LAUNCH_EXTRA)");
  779. - return false;
  780. - }
  781. -
  782. if (IntentUtils.safeGetBooleanExtra(
  783. intent, IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
  784. || IntentUtils.safeHasExtra(intent, ShortcutHelper.EXTRA_SOURCE)
  785. @@ -215,7 +163,6 @@ public class InstantAppsHandler {
  786. }
  787. Intent callbackIntent = new Intent(intent);
  788. - callbackIntent.putExtra(DO_NOT_LAUNCH_EXTRA, true);
  789. callbackIntent.putExtra(INSTANT_APP_START_TIME_EXTRA, startTime);
  790. return tryLaunchingInstantApp(context, intent, isCustomTabsIntent, callbackIntent);
  791. @@ -318,12 +265,9 @@ public class InstantAppsHandler {
  792. Intent iaIntent = data.getIntent();
  793. if (data.getReferrer() != null) {
  794. iaIntent.putExtra(Intent.EXTRA_REFERRER, data.getReferrer());
  795. - iaIntent.putExtra(IS_REFERRER_TRUSTED_EXTRA, true);
  796. }
  797. Context appContext = ContextUtils.getApplicationContext();
  798. - iaIntent.putExtra(TRUSTED_REFERRER_PKG_EXTRA, appContext.getPackageName());
  799. - iaIntent.putExtra(IS_USER_CONFIRMED_LAUNCH_EXTRA, true);
  800. try {
  801. appContext.startActivity(iaIntent);
  802. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java
  803. --- a/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java
  804. +++ b/chrome/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java
  805. @@ -8,11 +8,6 @@ import android.content.Context;
  806. import android.preference.PreferenceManager;
  807. import android.text.TextUtils;
  808. -import com.google.android.play.core.splitcompat.SplitCompat;
  809. -import com.google.android.play.core.splitinstall.SplitInstallManager;
  810. -import com.google.android.play.core.splitinstall.SplitInstallManagerFactory;
  811. -import com.google.android.play.core.splitinstall.SplitInstallRequest;
  812. -
  813. import org.chromium.base.BundleUtils;
  814. import org.chromium.base.ContextUtils;
  815. import org.chromium.base.Log;
  816. @@ -81,31 +76,12 @@ public class AppLocaleUtils {
  817. * @param context Activity context to enable downloaded language splits on.
  818. */
  819. public static void maybeInstallActivitySplitCompat(Context context) {
  820. - if (GlobalAppLocaleController.getInstance().isOverridden() && BundleUtils.isBundle()) {
  821. - Log.i(TAG, "maybeInstallActivitySplit isOverridden: %s isBundle: %s",
  822. - GlobalAppLocaleController.getInstance().isOverridden(), BundleUtils.isBundle());
  823. - Log.i(TAG, "Override Locale: %s", getAppLanguagePref());
  824. - logInstalledLanguages(context);
  825. - SplitCompat.installActivity(context);
  826. - logInstalledLanguages(context);
  827. - }
  828. }
  829. /**
  830. * For bundle builds ensure that the language split for languageName is downloaded.
  831. */
  832. private static void ensureLanguageSplitInstalled(String languageName) {
  833. - SplitInstallManager splitInstallManager =
  834. - SplitInstallManagerFactory.create(ContextUtils.getApplicationContext());
  835. -
  836. - // TODO(perrier): check if languageName is already installed. https://crbug.com/1103806
  837. - if (!TextUtils.equals(languageName, SYSTEM_LANGUAGE_VALUE)) {
  838. - SplitInstallRequest installRequest =
  839. - SplitInstallRequest.newBuilder()
  840. - .addLanguage(Locale.forLanguageTag(languageName))
  841. - .build();
  842. - splitInstallManager.startInstall(installRequest);
  843. - }
  844. }
  845. /**
  846. @@ -113,12 +89,6 @@ public class AppLocaleUtils {
  847. * @param context Context to log installed languages on.
  848. */
  849. private static void logInstalledLanguages(Context context) {
  850. - if (BundleUtils.isBundle()) {
  851. - SplitInstallManager splitInstallManager = SplitInstallManagerFactory.create(context);
  852. - Log.i(TAG, "Installed Languages: %s",
  853. - TextUtils.join(", ", splitInstallManager.getInstalledLanguages()));
  854. - } else {
  855. - Log.i(TAG, "Installed Languages: None - not a bundle");
  856. - }
  857. + Log.i(TAG, "Installed Languages: None - feature disabled");
  858. }
  859. }
  860. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
  861. --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
  862. +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
  863. @@ -19,8 +19,6 @@ import androidx.annotation.NonNull;
  864. import androidx.annotation.Nullable;
  865. import androidx.annotation.VisibleForTesting;
  866. -import com.google.android.gms.common.GooglePlayServicesUtil;
  867. -
  868. import org.chromium.base.ActivityState;
  869. import org.chromium.base.ApplicationStatus;
  870. import org.chromium.base.ApplicationStatus.ActivityStateListener;
  871. @@ -456,13 +454,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
  872. }
  873. private boolean isGooglePlayStoreAvailable(Context context) {
  874. - try {
  875. - context.getPackageManager().getPackageInfo(
  876. - GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
  877. - } catch (PackageManager.NameNotFoundException e) {
  878. - return false;
  879. - }
  880. - return true;
  881. + return false;
  882. }
  883. private long getSize(StatFs statFs) {
  884. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
  885. --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
  886. +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
  887. @@ -11,11 +11,6 @@ import android.os.Message;
  888. import androidx.annotation.IntDef;
  889. -import com.google.android.play.core.appupdate.AppUpdateInfo;
  890. -import com.google.android.play.core.appupdate.testing.FakeAppUpdateManager;
  891. -import com.google.android.play.core.install.model.AppUpdateType;
  892. -import com.google.android.play.core.tasks.Task;
  893. -
  894. import org.chromium.base.ContextUtils;
  895. import org.chromium.base.task.PostTask;
  896. import org.chromium.chrome.browser.app.ChromeActivity;
  897. @@ -31,7 +26,7 @@ import java.lang.ref.WeakReference;
  898. * wrapper isn't meant to be used for a full integration test, but simulating all of the possible
  899. * error cases is a bit easier to do here.
  900. */
  901. -public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
  902. +public class FakeAppUpdateManagerWrapper {
  903. private static final int RESULT_IN_APP_UPDATE_FAILED = 1;
  904. private static final int STEP_DELAY_MS = 5000;
  905. private static final int TOAST_DURATION_MS = 2000;
  906. @@ -108,15 +103,12 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
  907. switch (event) {
  908. case Event.UPDATE_AVAILABLE:
  909. w.toast("Making app update available.");
  910. - w.setUpdateAvailable(10000 /* Figure out a better version? */);
  911. return;
  912. case Event.USER_ACCEPTS_UPDATE:
  913. w.toast("User accepts update.");
  914. - w.userAcceptsUpdate();
  915. return;
  916. case Event.USER_REJECTS_UPDATE:
  917. w.toast("User rejects update.");
  918. - w.userRejectsUpdate();
  919. return;
  920. case Event.TRIGGER_DOWNLOAD:
  921. w.toast("Triggering download.");
  922. @@ -124,27 +116,21 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
  923. return;
  924. case Event.DOWNLOAD_STARTS:
  925. w.toast("Download has started.");
  926. - w.downloadStarts();
  927. return;
  928. case Event.DOWNLOAD_FAILS:
  929. w.toast("Triggering download failure.");
  930. - w.downloadFails();
  931. return;
  932. case Event.USER_CANCELS_DOWNLOAD:
  933. w.toast("Triggering cancellation of download.");
  934. - w.userCancelsDownload();
  935. return;
  936. case Event.DOWNLOAD_COMPLETES:
  937. w.toast("Download completes.");
  938. - w.downloadCompletes();
  939. return;
  940. case Event.INSTALL_FAILS:
  941. w.toast("Triggering install failure.");
  942. - w.installFails();
  943. return;
  944. case Event.INSTALL_COMPLETES:
  945. w.toast("Triggering install completion.");
  946. - w.installCompletes();
  947. return;
  948. default:
  949. w.toast("Unknown event.");
  950. @@ -159,56 +145,12 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
  951. * @param endState at which point should the inline update flow end.
  952. */
  953. FakeAppUpdateManagerWrapper(@Type int endState) {
  954. - super(ContextUtils.getApplicationContext());
  955. mType = endState;
  956. mEventHandler = new EventHandler(this);
  957. if (mType != Type.NONE) execute(Event.UPDATE_AVAILABLE);
  958. }
  959. - // FakeAppUpdateManager implementation.
  960. - @Override
  961. - public boolean startUpdateFlowForResult(AppUpdateInfo appUpdateInfo,
  962. - @AppUpdateType int appUpdateType, Activity activity, int requestCode) {
  963. - toast("Starting update flow.");
  964. - // TODO(dtrainor): Simulate exceptions being thrown or returning false from the super call.
  965. - boolean success =
  966. - super.startUpdateFlowForResult(appUpdateInfo, appUpdateType, activity, requestCode);
  967. - if (!success) return false;
  968. -
  969. - assert activity instanceof ChromeActivity : "Unexpected triggering activity.";
  970. -
  971. - final int resultCode;
  972. - if (mType == Type.FAIL_DIALOG_CANCEL) {
  973. - resultCode = Activity.RESULT_CANCELED;
  974. - } else if (mType == Type.FAIL_DIALOG_UPDATE_FAILED) {
  975. - resultCode = RESULT_IN_APP_UPDATE_FAILED;
  976. - } else {
  977. - resultCode = Activity.RESULT_OK;
  978. - }
  979. -
  980. - PostTask.postDelayedTask(UiThreadTaskTraits.DEFAULT, () -> {
  981. - triggerDialogResponse((ChromeActivity) activity, requestCode, resultCode);
  982. - }, STEP_DELAY_MS);
  983. -
  984. - return true;
  985. - }
  986. -
  987. - @Override
  988. - public Task<Void> completeUpdate() {
  989. - toast("Completing update.");
  990. - Task<Void> result = super.completeUpdate();
  991. -
  992. - if (mType == Type.FAIL_INSTALL) {
  993. - postDelayedEvent(Event.INSTALL_FAILS);
  994. - } else {
  995. - postDelayedEvent(Event.INSTALL_COMPLETES);
  996. - // This doesn't actually restart Chrome in this case.
  997. - }
  998. -
  999. - return result;
  1000. - }
  1001. -
  1002. private void triggerDialogResponse(ChromeActivity activity, int requestCode, int resultCode) {
  1003. if (resultCode == Activity.RESULT_OK) {
  1004. execute(Event.USER_ACCEPTS_UPDATE);
  1005. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
  1006. --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
  1007. +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
  1008. @@ -4,8 +4,6 @@
  1009. package org.chromium.chrome.browser.omaha.inline;
  1010. -import com.google.android.play.core.appupdate.AppUpdateManagerFactory;
  1011. -
  1012. import org.chromium.base.ContextUtils;
  1013. import org.chromium.chrome.browser.flags.ChromeFeatureList;
  1014. import org.chromium.chrome.browser.omaha.UpdateConfigs;
  1015. @@ -20,20 +18,6 @@ public class InlineUpdateControllerFactory {
  1016. public static InlineUpdateController create(Runnable callback) {
  1017. @FakeAppUpdateManagerWrapper.Type
  1018. int mockInlineEndState = UpdateConfigs.getMockInlineScenarioEndState();
  1019. - if (mockInlineEndState != FakeAppUpdateManagerWrapper.Type.NO_SIMULATION) {
  1020. - // The config requires to run through a test controller, using the
  1021. - // PlayInlineUpdateController, but with a fake Google Play backend that automatically
  1022. - // goes through a scenario flow.
  1023. - return new PlayInlineUpdateController(
  1024. - callback, new FakeAppUpdateManagerWrapper(mockInlineEndState));
  1025. - }
  1026. -
  1027. - if (ChromeFeatureList.isEnabled(ChromeFeatureList.INLINE_UPDATE_FLOW)) {
  1028. - // The application configuration requires to use the real Google Play backend for inline
  1029. - // updates.
  1030. - return new PlayInlineUpdateController(
  1031. - callback, AppUpdateManagerFactory.create(ContextUtils.getApplicationContext()));
  1032. - }
  1033. // No test scenario was in place, and the inline flow has not been enabled, so use a
  1034. // controller with no functionality.
  1035. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
  1036. --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
  1037. +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
  1038. @@ -10,15 +10,6 @@ import android.content.IntentSender.SendIntentException;
  1039. import androidx.annotation.IntDef;
  1040. import androidx.annotation.Nullable;
  1041. -import com.google.android.play.core.appupdate.AppUpdateInfo;
  1042. -import com.google.android.play.core.appupdate.AppUpdateManager;
  1043. -import com.google.android.play.core.install.InstallState;
  1044. -import com.google.android.play.core.install.InstallStateUpdatedListener;
  1045. -import com.google.android.play.core.install.model.AppUpdateType;
  1046. -import com.google.android.play.core.install.model.InstallErrorCode;
  1047. -import com.google.android.play.core.install.model.InstallStatus;
  1048. -import com.google.android.play.core.install.model.UpdateAvailability;
  1049. -
  1050. import org.chromium.base.Log;
  1051. import org.chromium.base.metrics.RecordHistogram;
  1052. import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
  1053. @@ -32,7 +23,7 @@ import java.lang.annotation.RetentionPolicy;
  1054. * in the foreground.
  1055. */
  1056. public class PlayInlineUpdateController
  1057. - implements InlineUpdateController, InstallStateUpdatedListener {
  1058. + implements InlineUpdateController {
  1059. /**
  1060. * Converts Play's InstallErrorCode enum to a stable monotomically incrementing Chrome enum.
  1061. * This is used for metric stability.
  1062. @@ -127,26 +118,9 @@ public class PlayInlineUpdateController
  1063. private static final int RESULT_IN_APP_UPDATE_FAILED = 1;
  1064. private static final int REQUEST_CODE = 8123;
  1065. - private final Runnable mCallback;
  1066. - private final AppUpdateManager mAppUpdateManager;
  1067. -
  1068. private boolean mEnabled;
  1069. private @Nullable @UpdateState Integer mUpdateState;
  1070. - private AppUpdateInfo mAppUpdateInfo;
  1071. - private @Nullable @UpdateAvailability Integer mUpdateAvailability;
  1072. - private @Nullable @InstallStatus Integer mInstallStatus;
  1073. -
  1074. - /**
  1075. - * Builds an instance of {@link PlayInlineUpdateController}.
  1076. - * @param callback The {@link Runnable} to notify when an inline update state change occurs.
  1077. - */
  1078. - PlayInlineUpdateController(Runnable callback, AppUpdateManager appUpdateManager) {
  1079. - mCallback = callback;
  1080. - mAppUpdateManager = appUpdateManager;
  1081. - setEnabled(true);
  1082. - }
  1083. -
  1084. // InlineUpdateController implementation.
  1085. @Override
  1086. public void setEnabled(boolean enabled) {
  1087. @@ -155,10 +129,8 @@ public class PlayInlineUpdateController
  1088. if (mEnabled) {
  1089. mUpdateState = UpdateState.NONE;
  1090. - mAppUpdateManager.registerListener(this);
  1091. pullCurrentState();
  1092. } else {
  1093. - mAppUpdateManager.unregisterListener(this);
  1094. }
  1095. }
  1096. @@ -169,220 +141,26 @@ public class PlayInlineUpdateController
  1097. @Override
  1098. public void startUpdate(Activity activity) {
  1099. - try {
  1100. - boolean success = mAppUpdateManager.startUpdateFlowForResult(
  1101. - mAppUpdateInfo, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE);
  1102. - Log.i(TAG, "startUpdateFlowForResult() returned " + success);
  1103. -
  1104. - if (!success) recordCallFailure(CallFailure.START_FAILED);
  1105. - } catch (SendIntentException exception) {
  1106. - mInstallStatus = InstallStatus.FAILED;
  1107. - Log.i(TAG, "startUpdateFlowForResult() threw an exception.");
  1108. - recordCallFailure(CallFailure.START_EXCEPTION);
  1109. - }
  1110. - // TODO(dtrainor): Use success.
  1111. }
  1112. @Override
  1113. public void completeUpdate() {
  1114. - mAppUpdateManager.completeUpdate()
  1115. - .addOnSuccessListener(unused -> {
  1116. - Log.i(TAG, "completeUpdate() success.");
  1117. - pushStatus();
  1118. - })
  1119. - .addOnFailureListener(exception -> {
  1120. - Log.i(TAG, "completeUpdate() failed.");
  1121. - recordCallFailure(CallFailure.COMPLETE_FAILED);
  1122. - mInstallStatus = InstallStatus.FAILED;
  1123. - pushStatus();
  1124. - });
  1125. - }
  1126. -
  1127. - // InstallStateUpdatedListener implementation.
  1128. - @Override
  1129. - public void onStateUpdate(InstallState state) {
  1130. - Log.i(TAG,
  1131. - "onStateUpdate(" + state.installStatus() + ", " + state.installErrorCode() + ")");
  1132. -
  1133. - if (state.installStatus() != mInstallStatus) {
  1134. - RecordHistogram.recordEnumeratedHistogram("GoogleUpdate.Inline.StateChange.Error."
  1135. - + installStatusToEnumSuffix(state.installStatus()),
  1136. - installErrorCodeToMetrics(state.installErrorCode()),
  1137. - InstallErrorCodeMetrics.NUM_ENTRIES);
  1138. - }
  1139. -
  1140. - mInstallStatus = state.installStatus();
  1141. - pushStatus();
  1142. }
  1143. private void pullCurrentState() {
  1144. - mAppUpdateManager.getAppUpdateInfo()
  1145. - .addOnSuccessListener(info -> {
  1146. - mAppUpdateInfo = info;
  1147. - mUpdateAvailability = info.updateAvailability();
  1148. - mInstallStatus = info.installStatus();
  1149. - Log.i(TAG,
  1150. - "pullCurrentState(" + mUpdateAvailability + ", " + mInstallStatus
  1151. - + ") success.");
  1152. - recordOnAppUpdateInfo(info);
  1153. - pushStatus();
  1154. - })
  1155. - .addOnFailureListener(exception -> {
  1156. - mAppUpdateInfo = null;
  1157. - mUpdateAvailability = UpdateAvailability.UNKNOWN;
  1158. - mInstallStatus = InstallStatus.UNKNOWN;
  1159. - Log.i(TAG, "pullCurrentState() failed.");
  1160. - recordCallFailure(CallFailure.QUERY_FAILED);
  1161. - pushStatus();
  1162. - });
  1163. }
  1164. private void pushStatus() {
  1165. - if (!mEnabled || mUpdateAvailability == null || mInstallStatus == null) return;
  1166. -
  1167. - @UpdateState
  1168. - int newState = toUpdateState(mUpdateAvailability, mInstallStatus);
  1169. - if (mUpdateState != null && mUpdateState == newState) return;
  1170. -
  1171. - Log.i(TAG, "Pushing inline update state to " + newState);
  1172. - mUpdateState = newState;
  1173. - mCallback.run();
  1174. }
  1175. private static @UpdateState int toUpdateState(
  1176. - @UpdateAvailability int updateAvailability, @InstallStatus int installStatus) {
  1177. + int updateAvailability, int installStatus) {
  1178. @UpdateState
  1179. int newStatus = UpdateState.NONE;
  1180. - // Note, use InstallStatus first then UpdateAvailability if InstallStatus doesn't indicate
  1181. - // a currently active install.
  1182. - switch (installStatus) {
  1183. - case InstallStatus.PENDING:
  1184. - // Intentional fall through.
  1185. - case InstallStatus.DOWNLOADING:
  1186. - newStatus = UpdateState.INLINE_UPDATE_DOWNLOADING;
  1187. - break;
  1188. - case InstallStatus.DOWNLOADED:
  1189. - newStatus = UpdateState.INLINE_UPDATE_READY;
  1190. - break;
  1191. - case InstallStatus.FAILED:
  1192. - newStatus = UpdateState.INLINE_UPDATE_FAILED;
  1193. - break;
  1194. - }
  1195. -
  1196. - if (newStatus == UpdateState.NONE) {
  1197. - switch (updateAvailability) {
  1198. - case UpdateAvailability.UPDATE_AVAILABLE:
  1199. - newStatus = UpdateState.INLINE_UPDATE_AVAILABLE;
  1200. - break;
  1201. - }
  1202. - }
  1203. -
  1204. return newStatus;
  1205. }
  1206. - private static String installStatusToEnumSuffix(@InstallStatus int status) {
  1207. - switch (status) {
  1208. - case InstallStatus.UNKNOWN:
  1209. - return "Unknown";
  1210. - case InstallStatus.REQUIRES_UI_INTENT:
  1211. - return "RequiresUiIntent";
  1212. - case InstallStatus.PENDING:
  1213. - return "Pending";
  1214. - case InstallStatus.DOWNLOADING:
  1215. - return "Downloading";
  1216. - case InstallStatus.DOWNLOADED:
  1217. - return "Downloaded";
  1218. - case InstallStatus.INSTALLING:
  1219. - return "Installing";
  1220. - case InstallStatus.INSTALLED:
  1221. - return "Installed";
  1222. - case InstallStatus.FAILED:
  1223. - return "Failed";
  1224. - case InstallStatus.CANCELED:
  1225. - return "Canceled";
  1226. - default:
  1227. - return "Untracked";
  1228. - }
  1229. - }
  1230. -
  1231. - private static @InstallErrorCodeMetrics int installErrorCodeToMetrics(
  1232. - @InstallErrorCode int error) {
  1233. - switch (error) {
  1234. - case InstallErrorCode.NO_ERROR:
  1235. - return InstallErrorCodeMetrics.NO_ERROR;
  1236. - case InstallErrorCode.NO_ERROR_PARTIALLY_ALLOWED:
  1237. - return InstallErrorCodeMetrics.NO_ERROR_PARTIALLY_ALLOWED;
  1238. - case InstallErrorCode.ERROR_UNKNOWN:
  1239. - return InstallErrorCodeMetrics.ERROR_UNKNOWN;
  1240. - case InstallErrorCode.ERROR_API_NOT_AVAILABLE:
  1241. - return InstallErrorCodeMetrics.ERROR_API_NOT_AVAILABLE;
  1242. - case InstallErrorCode.ERROR_INVALID_REQUEST:
  1243. - return InstallErrorCodeMetrics.ERROR_INVALID_REQUEST;
  1244. - case InstallErrorCode.ERROR_INSTALL_UNAVAILABLE:
  1245. - return InstallErrorCodeMetrics.ERROR_INSTALL_UNAVAILABLE;
  1246. - case InstallErrorCode.ERROR_INSTALL_NOT_ALLOWED:
  1247. - return InstallErrorCodeMetrics.ERROR_INSTALL_NOT_ALLOWED;
  1248. - case InstallErrorCode.ERROR_DOWNLOAD_NOT_PRESENT:
  1249. - return InstallErrorCodeMetrics.ERROR_DOWNLOAD_NOT_PRESENT;
  1250. - case InstallErrorCode.ERROR_INTERNAL_ERROR:
  1251. - return InstallErrorCodeMetrics.ERROR_INTERNAL_ERROR;
  1252. - default:
  1253. - return InstallErrorCodeMetrics.ERROR_UNTRACKED;
  1254. - }
  1255. - }
  1256. -
  1257. - private static @UpdateAvailabilityMetric int updateAvailabilityToMetrics(
  1258. - @UpdateAvailability int updateAvailability) {
  1259. - switch (updateAvailability) {
  1260. - case UpdateAvailability.UNKNOWN:
  1261. - return UpdateAvailabilityMetric.UNKNOWN;
  1262. - case UpdateAvailability.UPDATE_NOT_AVAILABLE:
  1263. - return UpdateAvailabilityMetric.UPDATE_NOT_AVAILABLE;
  1264. - case UpdateAvailability.UPDATE_AVAILABLE:
  1265. - return UpdateAvailabilityMetric.UPDATE_AVAILABLE;
  1266. - case UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS:
  1267. - return UpdateAvailabilityMetric.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS;
  1268. - default:
  1269. - return UpdateAvailabilityMetric.UNTRACKED;
  1270. - }
  1271. - }
  1272. -
  1273. - private static @InstallStatusMetric int installStatusToMetrics(
  1274. - @InstallStatus int installStatus) {
  1275. - switch (installStatus) {
  1276. - case InstallStatus.UNKNOWN:
  1277. - return InstallStatusMetric.UNKNOWN;
  1278. - case InstallStatus.REQUIRES_UI_INTENT:
  1279. - return InstallStatusMetric.REQUIRES_UI_INTENT;
  1280. - case InstallStatus.PENDING:
  1281. - return InstallStatusMetric.PENDING;
  1282. - case InstallStatus.DOWNLOADING:
  1283. - return InstallStatusMetric.DOWNLOADING;
  1284. - case InstallStatus.DOWNLOADED:
  1285. - return InstallStatusMetric.DOWNLOADED;
  1286. - case InstallStatus.INSTALLING:
  1287. - return InstallStatusMetric.INSTALLING;
  1288. - case InstallStatus.INSTALLED:
  1289. - return InstallStatusMetric.INSTALLED;
  1290. - case InstallStatus.FAILED:
  1291. - return InstallStatusMetric.FAILED;
  1292. - case InstallStatus.CANCELED:
  1293. - return InstallStatusMetric.CANCELED;
  1294. - default:
  1295. - return InstallStatusMetric.UNTRACKED;
  1296. - }
  1297. - }
  1298. -
  1299. - private static void recordOnAppUpdateInfo(AppUpdateInfo info) {
  1300. - RecordHistogram.recordEnumeratedHistogram(
  1301. - "GoogleUpdate.Inline.AppUpdateInfo.UpdateAvailability",
  1302. - updateAvailabilityToMetrics(info.updateAvailability()),
  1303. - UpdateAvailabilityMetric.NUM_ENTRIES);
  1304. - RecordHistogram.recordEnumeratedHistogram("GoogleUpdate.Inline.AppUpdateInfo.InstallStatus",
  1305. - installStatusToMetrics(info.installStatus()), InstallStatusMetric.NUM_ENTRIES);
  1306. - }
  1307. -
  1308. private static void recordCallFailure(@CallFailure int failure) {
  1309. RecordHistogram.recordEnumeratedHistogram(
  1310. "GoogleUpdate.Inline.CallFailure", failure, CallFailure.NUM_ENTRIES);
  1311. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
  1312. --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
  1313. +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
  1314. @@ -40,7 +40,6 @@ import org.chromium.chrome.browser.preferences.Pref;
  1315. import org.chromium.chrome.browser.profiles.Profile;
  1316. import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
  1317. import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
  1318. -import org.chromium.chrome.browser.webauthn.CableAuthenticatorModuleProvider;
  1319. import org.chromium.components.browser_ui.settings.ChromeBasePreference;
  1320. import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
  1321. import org.chromium.components.browser_ui.settings.SearchUtils;
  1322. @@ -559,19 +558,6 @@ public class PasswordSettings
  1323. }
  1324. private void displaySecurityKeyLink() {
  1325. - if (mSecurityKey == null) {
  1326. - mSecurityKey = new ChromeBasePreference(getStyledContext());
  1327. - mSecurityKey.setKey(PREF_KEY_SECURITY_KEY_LINK);
  1328. - mSecurityKey.setTitle(R.string.phone_as_security_key_text);
  1329. - mSecurityKey.setOnPreferenceClickListener(preference -> {
  1330. - SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
  1331. - settingsLauncher.launchSettingsActivity(
  1332. - getActivity(), CableAuthenticatorModuleProvider.class, null);
  1333. - return true;
  1334. - });
  1335. - mSecurityKey.setOrder(ORDER_SECURITY_KEY);
  1336. - }
  1337. - getPreferenceScreen().addPreference(mSecurityKey);
  1338. }
  1339. private Context getStyledContext() {
  1340. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
  1341. --- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
  1342. +++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
  1343. @@ -42,7 +42,6 @@ public class GCMBackgroundTask implements BackgroundTask {
  1344. return false;
  1345. }
  1346. - ChromeGcmListenerServiceImpl.dispatchMessageToDriver(message);
  1347. return false;
  1348. }
  1349. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
  1350. --- a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
  1351. +++ b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
  1352. @@ -102,14 +102,7 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
  1353. mMakeCredentialCallback = callback;
  1354. Context context = ContextUtils.getApplicationContext();
  1355. - if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
  1356. - < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
  1357. - onError(AuthenticatorStatus.NOT_IMPLEMENTED);
  1358. - return;
  1359. - }
  1360. -
  1361. - mIsOperationPending = true;
  1362. - Fido2ApiHandler.getInstance().makeCredential(options, mRenderFrameHost, mOrigin, this);
  1363. + onError(AuthenticatorStatus.NOT_IMPLEMENTED);
  1364. }
  1365. /**
  1366. @@ -137,14 +130,7 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
  1367. mGetAssertionCallback = callback;
  1368. Context context = ContextUtils.getApplicationContext();
  1369. - if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
  1370. - < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
  1371. - onError(AuthenticatorStatus.NOT_IMPLEMENTED);
  1372. - return;
  1373. - }
  1374. -
  1375. - mIsOperationPending = true;
  1376. - Fido2ApiHandler.getInstance().getAssertion(options, mRenderFrameHost, mOrigin, this);
  1377. + onError(AuthenticatorStatus.NOT_IMPLEMENTED);
  1378. }
  1379. /**
  1380. @@ -177,15 +163,8 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
  1381. return;
  1382. }
  1383. - if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
  1384. - < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
  1385. - callback.call(false);
  1386. - return;
  1387. - }
  1388. -
  1389. - mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue.add(callback);
  1390. - Fido2ApiHandler.getInstance().isUserVerifyingPlatformAuthenticatorAvailable(
  1391. - mRenderFrameHost, this);
  1392. + callback.call(false);
  1393. + return;
  1394. }
  1395. /**
  1396. diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/modules/chrome_feature_modules.gni
  1397. --- a/chrome/android/modules/chrome_feature_modules.gni
  1398. +++ b/chrome/android/modules/chrome_feature_modules.gni
  1399. @@ -8,8 +8,6 @@ import(
  1400. import("//chrome/android/features/dev_ui/dev_ui_module.gni")
  1401. import("//chrome/android/features/tab_ui/tab_ui_module.gni")
  1402. import("//chrome/android/modules/buildflags.gni")
  1403. -import(
  1404. - "//chrome/android/modules/cablev2_authenticator/cablev2_authenticator_module.gni")
  1405. import("//chrome/android/modules/extra_icu/extra_icu_module.gni")
  1406. import("//chrome/android/modules/stack_unwinder/stack_unwinder_module.gni")
  1407. import("//chrome/android/modules/test_dummy/test_dummy_module.gni")
  1408. @@ -63,7 +61,6 @@ if (false) { # AR DFM is currently disabled
  1409. if (!disable_tab_ui_dfm) {
  1410. monochrome_module_descs += [ tab_ui_module_desc ]
  1411. }
  1412. -monochrome_module_descs += [ cablev2_authenticator_module_desc ]
  1413. # Modules shipped in Trichrome (Android Q+).
  1414. trichrome_module_descs = monochrome_module_descs
  1415. diff --git a/chrome/browser/signin/services/android/BUILD.gn b/chrome/browser/signin/services/android/BUILD.gn
  1416. --- a/chrome/browser/signin/services/android/BUILD.gn
  1417. +++ b/chrome/browser/signin/services/android/BUILD.gn
  1418. @@ -27,7 +27,6 @@ android_library("java") {
  1419. ]
  1420. deps = [
  1421. ":java_resources",
  1422. - "$google_play_services_package:google_play_services_auth_base_java",
  1423. "//base:base_java",
  1424. "//base:jni_java",
  1425. "//chrome/browser/preferences:java",
  1426. diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
  1427. --- a/chrome/test/android/BUILD.gn
  1428. +++ b/chrome/test/android/BUILD.gn
  1429. @@ -260,8 +260,6 @@ android_library("chrome_java_test_support") {
  1430. ]
  1431. deps = [
  1432. - "$google_play_services_package:google_play_services_base_java",
  1433. - "$google_play_services_package:google_play_services_basement_java",
  1434. "//base:base_java",
  1435. "//base:base_java_test_support",
  1436. "//chrome/android:base_module_java",
  1437. diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
  1438. --- a/components/background_task_scheduler/BUILD.gn
  1439. +++ b/components/background_task_scheduler/BUILD.gn
  1440. @@ -104,7 +104,6 @@ if (is_android) {
  1441. bypass_platform_checks = true
  1442. testonly = true
  1443. sources = [
  1444. - "internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskServiceTest.java",
  1445. "internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskJobServiceTest.java",
  1446. "internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerAlarmManagerTest.java",
  1447. "internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManagerTest.java",
  1448. @@ -121,11 +120,6 @@ if (is_android) {
  1449. deps = [
  1450. ":background_task_scheduler_task_ids_java",
  1451. - "$google_play_services_package:google_play_services_auth_base_java",
  1452. - "$google_play_services_package:google_play_services_base_java",
  1453. - "$google_play_services_package:google_play_services_basement_java",
  1454. - "$google_play_services_package:google_play_services_gcm_java",
  1455. - "$google_play_services_package:google_play_services_tasks_java",
  1456. "internal:internal_java",
  1457. "internal:proto_java",
  1458. "//base:base_java",
  1459. diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components/background_task_scheduler/internal/BUILD.gn
  1460. --- a/components/background_task_scheduler/internal/BUILD.gn
  1461. +++ b/components/background_task_scheduler/internal/BUILD.gn
  1462. @@ -11,12 +11,10 @@ if (is_android) {
  1463. android_library("internal_java") {
  1464. sources = [
  1465. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskBroadcastReceiver.java",
  1466. - "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java",
  1467. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService.java",
  1468. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerAlarmManager.java",
  1469. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerDelegate.java",
  1470. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java",
  1471. - "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java",
  1472. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl.java",
  1473. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService.java",
  1474. "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerPrefs.java",
  1475. @@ -27,10 +25,6 @@ if (is_android) {
  1476. deps = [
  1477. ":proto_java",
  1478. - "$google_play_services_package:google_play_services_base_java",
  1479. - "$google_play_services_package:google_play_services_basement_java",
  1480. - "$google_play_services_package:google_play_services_gcm_java",
  1481. - "$google_play_services_package:google_play_services_tasks_java",
  1482. "//base:base_java",
  1483. "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
  1484. "//components/background_task_scheduler:public_java",
  1485. @@ -99,10 +93,6 @@ if (is_android) {
  1486. deps = [
  1487. ":internal_java",
  1488. - "$google_play_services_package:google_play_services_base_java",
  1489. - "$google_play_services_package:google_play_services_basement_java",
  1490. - "$google_play_services_package:google_play_services_gcm_java",
  1491. - "$google_play_services_package:google_play_services_tasks_java",
  1492. "//base:base_java",
  1493. "//base:base_java_test_support",
  1494. "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
  1495. diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
  1496. deleted file mode 100644
  1497. --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
  1498. +++ /dev/null
  1499. @@ -1,160 +0,0 @@
  1500. -// Copyright 2017 The Chromium Authors. All rights reserved.
  1501. -// Use of this source code is governed by a BSD-style license that can be
  1502. -// found in the LICENSE file.
  1503. -
  1504. -package org.chromium.components.background_task_scheduler.internal;
  1505. -
  1506. -import android.os.Build;
  1507. -
  1508. -import androidx.annotation.VisibleForTesting;
  1509. -
  1510. -import com.google.android.gms.gcm.GcmNetworkManager;
  1511. -import com.google.android.gms.gcm.GcmTaskService;
  1512. -import com.google.android.gms.gcm.TaskParams;
  1513. -
  1514. -import org.chromium.base.ContextUtils;
  1515. -import org.chromium.base.Log;
  1516. -import org.chromium.base.ThreadUtils;
  1517. -import org.chromium.components.background_task_scheduler.BackgroundTask;
  1518. -import org.chromium.components.background_task_scheduler.TaskParameters;
  1519. -
  1520. -import java.util.concurrent.CountDownLatch;
  1521. -import java.util.concurrent.TimeUnit;
  1522. -import java.util.concurrent.atomic.AtomicBoolean;
  1523. -
  1524. -/** Delegates calls out to various tasks that need to run in the background. */
  1525. -public class BackgroundTaskGcmTaskService extends GcmTaskService {
  1526. - private static final String TAG = "BkgrdTaskGcmTS";
  1527. -
  1528. - private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
  1529. -
  1530. - @VisibleForTesting
  1531. - void setClockForTesting(BackgroundTaskSchedulerGcmNetworkManager.Clock clock) {
  1532. - mClock = clock;
  1533. - }
  1534. -
  1535. - /** Class that waits for the processing to be done. */
  1536. - private static class Waiter {
  1537. - // Wakelock is only held for 3 minutes by default for GcmTaskService.
  1538. - private static final long MAX_TIMEOUT_SECONDS = 179;
  1539. - private final CountDownLatch mLatch;
  1540. - private long mWaiterTimeoutSeconds;
  1541. - private boolean mIsRescheduleNeeded;
  1542. - private boolean mHasTaskTimedOut;
  1543. -
  1544. - public Waiter(long waiterTimeoutSeconds) {
  1545. - mLatch = new CountDownLatch(1);
  1546. - mWaiterTimeoutSeconds = Math.min(waiterTimeoutSeconds, MAX_TIMEOUT_SECONDS);
  1547. - }
  1548. -
  1549. - /** Start waiting for the processing to finish. */
  1550. - public void startWaiting() {
  1551. - try {
  1552. - mHasTaskTimedOut = !mLatch.await(mWaiterTimeoutSeconds, TimeUnit.SECONDS);
  1553. - } catch (InterruptedException e) {
  1554. - Log.d(TAG, "Waiter interrupted while waiting.");
  1555. - }
  1556. - }
  1557. -
  1558. - /** Called to finish waiting. */
  1559. - public void onWaitDone(boolean needsRescheduling) {
  1560. - mIsRescheduleNeeded = needsRescheduling;
  1561. - mLatch.countDown();
  1562. - }
  1563. -
  1564. - /** @return Whether last task timed out. */
  1565. - public boolean hasTaskTimedOut() {
  1566. - return mHasTaskTimedOut;
  1567. - }
  1568. -
  1569. - /** @return Whether task needs to be rescheduled. */
  1570. - public boolean isRescheduleNeeded() {
  1571. - return mIsRescheduleNeeded;
  1572. - }
  1573. - }
  1574. -
  1575. - private static class TaskFinishedCallbackGcmTaskService
  1576. - implements BackgroundTask.TaskFinishedCallback {
  1577. - private final Waiter mWaiter;
  1578. -
  1579. - public TaskFinishedCallbackGcmTaskService(Waiter waiter) {
  1580. - mWaiter = waiter;
  1581. - }
  1582. -
  1583. - @Override
  1584. - public void taskFinished(final boolean needsReschedule) {
  1585. - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
  1586. - @Override
  1587. - public void run() {
  1588. - mWaiter.onWaitDone(needsReschedule);
  1589. - }
  1590. - });
  1591. - }
  1592. - }
  1593. -
  1594. - @Override
  1595. - public int onRunTask(TaskParams params) {
  1596. - final TaskParameters taskParams =
  1597. - BackgroundTaskSchedulerGcmNetworkManager.getTaskParametersFromTaskParams(params);
  1598. -
  1599. - final BackgroundTask backgroundTask =
  1600. - BackgroundTaskSchedulerFactoryInternal.getBackgroundTaskFromTaskId(
  1601. - taskParams.getTaskId());
  1602. - if (backgroundTask == null) {
  1603. - Log.w(TAG, "Failed to start task. Could not instantiate BackgroundTask class.");
  1604. - // Cancel task if the BackgroundTask class is not found anymore. We assume this means
  1605. - // that the task has been deprecated.
  1606. - BackgroundTaskSchedulerFactoryInternal.getScheduler().cancel(
  1607. - ContextUtils.getApplicationContext(), taskParams.getTaskId());
  1608. - return GcmNetworkManager.RESULT_FAILURE;
  1609. - }
  1610. -
  1611. - if (BackgroundTaskSchedulerGcmNetworkManager.didTaskExpire(
  1612. - params, mClock.currentTimeMillis())) {
  1613. - BackgroundTaskSchedulerUma.getInstance().reportTaskExpired(taskParams.getTaskId());
  1614. - return GcmNetworkManager.RESULT_FAILURE;
  1615. - }
  1616. -
  1617. - final Waiter waiter = new Waiter(Waiter.MAX_TIMEOUT_SECONDS);
  1618. -
  1619. - final AtomicBoolean taskNeedsBackgroundProcessing = new AtomicBoolean();
  1620. - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
  1621. - @Override
  1622. - public void run() {
  1623. - BackgroundTaskSchedulerUma.getInstance().reportTaskStarted(taskParams.getTaskId());
  1624. - taskNeedsBackgroundProcessing.set(
  1625. - backgroundTask.onStartTask(ContextUtils.getApplicationContext(), taskParams,
  1626. - new TaskFinishedCallbackGcmTaskService(waiter)));
  1627. - }
  1628. - });
  1629. -
  1630. - if (!taskNeedsBackgroundProcessing.get()) return GcmNetworkManager.RESULT_SUCCESS;
  1631. -
  1632. - waiter.startWaiting();
  1633. -
  1634. - if (waiter.isRescheduleNeeded()) return GcmNetworkManager.RESULT_RESCHEDULE;
  1635. - if (!waiter.hasTaskTimedOut()) return GcmNetworkManager.RESULT_SUCCESS;
  1636. -
  1637. - final AtomicBoolean taskNeedsRescheduling = new AtomicBoolean();
  1638. - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
  1639. - @Override
  1640. - public void run() {
  1641. - BackgroundTaskSchedulerUma.getInstance().reportTaskStopped(taskParams.getTaskId());
  1642. - taskNeedsRescheduling.set(backgroundTask.onStopTask(
  1643. - ContextUtils.getApplicationContext(), taskParams));
  1644. - }
  1645. - });
  1646. -
  1647. - if (taskNeedsRescheduling.get()) return GcmNetworkManager.RESULT_RESCHEDULE;
  1648. -
  1649. - return GcmNetworkManager.RESULT_SUCCESS;
  1650. - }
  1651. -
  1652. - @Override
  1653. - public void onInitializeTasks() {
  1654. - // Ignore the event on OSs supporting JobScheduler.
  1655. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) return;
  1656. - BackgroundTaskSchedulerFactoryInternal.getScheduler().reschedule(
  1657. - ContextUtils.getApplicationContext());
  1658. - }
  1659. -}
  1660. diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
  1661. --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
  1662. +++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
  1663. @@ -21,11 +21,7 @@ public final class BackgroundTaskSchedulerFactoryInternal {
  1664. private static BackgroundTaskFactory sBackgroundTaskFactory;
  1665. static BackgroundTaskSchedulerDelegate getSchedulerDelegateForSdk(int sdkInt) {
  1666. - if (sdkInt >= Build.VERSION_CODES.M) {
  1667. - return new BackgroundTaskSchedulerJobService();
  1668. - } else {
  1669. - return new BackgroundTaskSchedulerGcmNetworkManager();
  1670. - }
  1671. + return new BackgroundTaskSchedulerJobService();
  1672. }
  1673. /**
  1674. diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
  1675. deleted file mode 100644
  1676. --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
  1677. +++ /dev/null
  1678. @@ -1,257 +0,0 @@
  1679. -// Copyright 2017 The Chromium Authors. All rights reserved.
  1680. -// Use of this source code is governed by a BSD-style license that can be
  1681. -// found in the LICENSE file.
  1682. -
  1683. -package org.chromium.components.background_task_scheduler.internal;
  1684. -
  1685. -import android.content.Context;
  1686. -import android.os.Bundle;
  1687. -
  1688. -import androidx.annotation.NonNull;
  1689. -import androidx.annotation.VisibleForTesting;
  1690. -
  1691. -import com.google.android.gms.gcm.GcmNetworkManager;
  1692. -import com.google.android.gms.gcm.OneoffTask;
  1693. -import com.google.android.gms.gcm.PeriodicTask;
  1694. -import com.google.android.gms.gcm.Task;
  1695. -import com.google.android.gms.gcm.TaskParams;
  1696. -
  1697. -import org.chromium.base.Log;
  1698. -import org.chromium.base.ThreadUtils;
  1699. -import org.chromium.components.background_task_scheduler.TaskInfo;
  1700. -import org.chromium.components.background_task_scheduler.TaskParameters;
  1701. -import org.chromium.gms.ChromiumPlayServicesAvailability;
  1702. -
  1703. -import java.util.concurrent.TimeUnit;
  1704. -
  1705. -/**
  1706. - * An implementation of {@link BackgroundTaskSchedulerDelegate} that uses the Play Services
  1707. - * {@link GcmNetworkManager} to schedule jobs.
  1708. - */
  1709. -class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedulerDelegate {
  1710. - private static final String TAG = "BkgrdTaskSchedGcmNM";
  1711. -
  1712. - /** Delta time for expiration checks, after the end time. */
  1713. - static final long DEADLINE_DELTA_MS = 1000;
  1714. -
  1715. - /** Clock to use so we can mock time in tests. */
  1716. - public interface Clock { long currentTimeMillis(); }
  1717. -
  1718. - private static Clock sClock = System::currentTimeMillis;
  1719. -
  1720. - @VisibleForTesting
  1721. - static void setClockForTesting(Clock clock) {
  1722. - sClock = clock;
  1723. - }
  1724. -
  1725. - /**
  1726. - * Checks if a task expired, based on the current time of the service.
  1727. - *
  1728. - * @param taskParams parameters sent to the service, which contain the scheduling information
  1729. - * regarding expiration.
  1730. - * @param currentTimeMs the current time of the service.
  1731. - * @return true if the task expired and false otherwise.
  1732. - */
  1733. - static boolean didTaskExpire(TaskParams taskParams, long currentTimeMs) {
  1734. - Bundle extras = taskParams.getExtras();
  1735. - if (extras == null || !extras.containsKey(BACKGROUND_TASK_SCHEDULE_TIME_KEY)) {
  1736. - return false;
  1737. - }
  1738. -
  1739. - long scheduleTimeMs = extras.getLong(BACKGROUND_TASK_SCHEDULE_TIME_KEY);
  1740. - if (extras.containsKey(BACKGROUND_TASK_END_TIME_KEY)) {
  1741. - long endTimeMs =
  1742. - extras.getLong(BackgroundTaskSchedulerDelegate.BACKGROUND_TASK_END_TIME_KEY);
  1743. - return TaskInfo.OneOffInfo.getExpirationStatus(
  1744. - scheduleTimeMs, endTimeMs, currentTimeMs);
  1745. - } else {
  1746. - long intervalTimeMs = extras.getLong(BACKGROUND_TASK_INTERVAL_TIME_KEY);
  1747. -
  1748. - // If flex is never set, it is given a default value of 10% of the period time, as
  1749. - // per the GcmNetworkManager behaviour. This default value is set in
  1750. - // https://developers.google.com/android/reference/com/google/android/gms/gcm/PeriodicTask.
  1751. - double defaultFlexAsFractionOfInterval = 0.1f;
  1752. -
  1753. - long flexTimeMs = extras.getLong(BACKGROUND_TASK_FLEX_TIME_KEY,
  1754. - /*defaultValue=*/(long) (defaultFlexAsFractionOfInterval * intervalTimeMs));
  1755. -
  1756. - return TaskInfo.PeriodicInfo.getExpirationStatus(
  1757. - scheduleTimeMs, intervalTimeMs, flexTimeMs, currentTimeMs);
  1758. - }
  1759. - }
  1760. -
  1761. - /**
  1762. - * Retrieves the {@link TaskParameters} from the {@link TaskParams}, which are passed as
  1763. - * one of the keys. Only values valid for {@link android.os.BaseBundle} are supported, and other
  1764. - * values are stripped at the time when the task is scheduled.
  1765. - *
  1766. - * @param taskParams the {@link TaskParams} to extract the {@link TaskParameters} from.
  1767. - * @return the {@link TaskParameters} for the current job.
  1768. - */
  1769. - static TaskParameters getTaskParametersFromTaskParams(@NonNull TaskParams taskParams) {
  1770. - int taskId;
  1771. - try {
  1772. - taskId = Integer.parseInt(taskParams.getTag());
  1773. - } catch (NumberFormatException e) {
  1774. - Log.e(TAG, "Cound not parse task ID from task tag: " + taskParams.getTag());
  1775. - return null;
  1776. - }
  1777. -
  1778. - TaskParameters.Builder builder = TaskParameters.create(taskId);
  1779. -
  1780. - Bundle extras = taskParams.getExtras();
  1781. - Bundle taskExtras = extras.getBundle(BACKGROUND_TASK_EXTRAS_KEY);
  1782. - builder.addExtras(taskExtras);
  1783. -
  1784. - return builder.build();
  1785. - }
  1786. -
  1787. - @VisibleForTesting
  1788. - static Task createTaskFromTaskInfo(@NonNull TaskInfo taskInfo) {
  1789. - Bundle taskExtras = new Bundle();
  1790. - taskExtras.putBundle(BACKGROUND_TASK_EXTRAS_KEY, taskInfo.getExtras());
  1791. -
  1792. - TaskBuilderVisitor taskBuilderVisitor = new TaskBuilderVisitor(taskExtras);
  1793. - taskInfo.getTimingInfo().accept(taskBuilderVisitor);
  1794. - Task.Builder builder = taskBuilderVisitor.getBuilder();
  1795. -
  1796. - builder.setPersisted(taskInfo.isPersisted())
  1797. - .setRequiredNetwork(getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType(
  1798. - taskInfo.getRequiredNetworkType()))
  1799. - .setRequiresCharging(taskInfo.requiresCharging())
  1800. - .setService(BackgroundTaskGcmTaskService.class)
  1801. - .setTag(taskIdToTaskTag(taskInfo.getTaskId()))
  1802. - .setUpdateCurrent(taskInfo.shouldUpdateCurrent());
  1803. -
  1804. - return builder.build();
  1805. - }
  1806. -
  1807. - private static class TaskBuilderVisitor implements TaskInfo.TimingInfoVisitor {
  1808. - private Task.Builder mBuilder;
  1809. - private final Bundle mTaskExtras;
  1810. -
  1811. - TaskBuilderVisitor(Bundle taskExtras) {
  1812. - mTaskExtras = taskExtras;
  1813. - }
  1814. -
  1815. - // Only valid after a TimingInfo object was visited.
  1816. - Task.Builder getBuilder() {
  1817. - return mBuilder;
  1818. - }
  1819. -
  1820. - @Override
  1821. - public void visit(TaskInfo.OneOffInfo oneOffInfo) {
  1822. - if (oneOffInfo.expiresAfterWindowEndTime()) {
  1823. - mTaskExtras.putLong(BACKGROUND_TASK_SCHEDULE_TIME_KEY, sClock.currentTimeMillis());
  1824. - mTaskExtras.putLong(BACKGROUND_TASK_END_TIME_KEY, oneOffInfo.getWindowEndTimeMs());
  1825. - }
  1826. -
  1827. - OneoffTask.Builder builder = new OneoffTask.Builder();
  1828. - long windowStartSeconds = oneOffInfo.hasWindowStartTimeConstraint()
  1829. - ? TimeUnit.MILLISECONDS.toSeconds(oneOffInfo.getWindowStartTimeMs())
  1830. - : 0;
  1831. - long windowEndTimeMs = oneOffInfo.getWindowEndTimeMs();
  1832. - if (oneOffInfo.expiresAfterWindowEndTime()) {
  1833. - windowEndTimeMs += DEADLINE_DELTA_MS;
  1834. - }
  1835. - builder.setExecutionWindow(
  1836. - windowStartSeconds, TimeUnit.MILLISECONDS.toSeconds(windowEndTimeMs));
  1837. - builder.setExtras(mTaskExtras);
  1838. - mBuilder = builder;
  1839. - }
  1840. -
  1841. - @Override
  1842. - public void visit(TaskInfo.PeriodicInfo periodicInfo) {
  1843. - if (periodicInfo.expiresAfterWindowEndTime()) {
  1844. - mTaskExtras.putLong(BACKGROUND_TASK_SCHEDULE_TIME_KEY, sClock.currentTimeMillis());
  1845. - mTaskExtras.putLong(
  1846. - BACKGROUND_TASK_INTERVAL_TIME_KEY, periodicInfo.getIntervalMs());
  1847. - if (periodicInfo.hasFlex()) {
  1848. - mTaskExtras.putLong(BACKGROUND_TASK_FLEX_TIME_KEY, periodicInfo.getFlexMs());
  1849. - }
  1850. - }
  1851. -
  1852. - PeriodicTask.Builder builder = new PeriodicTask.Builder();
  1853. - builder.setPeriod(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getIntervalMs()));
  1854. - if (periodicInfo.hasFlex()) {
  1855. - builder.setFlex(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getFlexMs()));
  1856. - }
  1857. - builder.setExtras(mTaskExtras);
  1858. - mBuilder = builder;
  1859. - }
  1860. -
  1861. - @Override
  1862. - public void visit(TaskInfo.ExactInfo exactInfo) {
  1863. - throw new RuntimeException("Exact tasks should not be scheduled with "
  1864. - + "GcmNetworkManager.");
  1865. - }
  1866. - }
  1867. -
  1868. - private static int getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType(
  1869. - @TaskInfo.NetworkType int networkType) {
  1870. - switch (networkType) {
  1871. - // This is correct: GcmNM ANY means no network is guaranteed.
  1872. - case TaskInfo.NetworkType.NONE:
  1873. - return Task.NETWORK_STATE_ANY;
  1874. - case TaskInfo.NetworkType.ANY:
  1875. - return Task.NETWORK_STATE_CONNECTED;
  1876. - case TaskInfo.NetworkType.UNMETERED:
  1877. - return Task.NETWORK_STATE_UNMETERED;
  1878. - default:
  1879. - assert false;
  1880. - }
  1881. - return Task.NETWORK_STATE_ANY;
  1882. - }
  1883. -
  1884. - @Override
  1885. - public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
  1886. - ThreadUtils.assertOnUiThread();
  1887. -
  1888. - GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
  1889. - if (gcmNetworkManager == null) {
  1890. - Log.e(TAG, "GcmNetworkManager is not available.");
  1891. - return false;
  1892. - }
  1893. -
  1894. - try {
  1895. - Task task = createTaskFromTaskInfo(taskInfo);
  1896. - gcmNetworkManager.schedule(task);
  1897. - } catch (IllegalArgumentException e) {
  1898. - String gcmErrorMessage = e.getMessage() == null ? "null." : e.getMessage();
  1899. - Log.e(TAG,
  1900. - "GcmNetworkManager failed to schedule task, gcm message: " + gcmErrorMessage);
  1901. - return false;
  1902. - }
  1903. -
  1904. - return true;
  1905. - }
  1906. -
  1907. - @Override
  1908. - public void cancel(Context context, int taskId) {
  1909. - ThreadUtils.assertOnUiThread();
  1910. -
  1911. - GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
  1912. - if (gcmNetworkManager == null) {
  1913. - Log.e(TAG, "GcmNetworkManager is not available.");
  1914. - return;
  1915. - }
  1916. -
  1917. - try {
  1918. - gcmNetworkManager.cancelTask(
  1919. - taskIdToTaskTag(taskId), BackgroundTaskGcmTaskService.class);
  1920. - } catch (IllegalArgumentException e) {
  1921. - Log.e(TAG, "GcmNetworkManager failed to cancel task.");
  1922. - }
  1923. - }
  1924. -
  1925. - private GcmNetworkManager getGcmNetworkManager(Context context) {
  1926. - if (ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(context)) {
  1927. - return GcmNetworkManager.getInstance(context);
  1928. - }
  1929. - return null;
  1930. - }
  1931. -
  1932. - private static String taskIdToTaskTag(int taskId) {
  1933. - return Integer.toString(taskId);
  1934. - }
  1935. -}
  1936. diff --git a/components/externalauth/android/BUILD.gn b/components/externalauth/android/BUILD.gn
  1937. --- a/components/externalauth/android/BUILD.gn
  1938. +++ b/components/externalauth/android/BUILD.gn
  1939. @@ -27,8 +27,6 @@ android_library("google_delegate_public_impl_java") {
  1940. android_library("java") {
  1941. deps = [
  1942. ":google_delegate_java",
  1943. - "$google_play_services_package:google_play_services_base_java",
  1944. - "$google_play_services_package:google_play_services_basement_java",
  1945. "//base:base_java",
  1946. "//components/embedder_support/android:browser_context_java",
  1947. "//components/embedder_support/android:util_java",
  1948. @@ -50,7 +48,6 @@ android_library("junit") {
  1949. deps = [
  1950. ":java",
  1951. - "$google_play_services_package:google_play_services_basement_java",
  1952. "//base:base_java",
  1953. "//base:base_java_test_support",
  1954. "//base:base_junit_test_support",
  1955. diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
  1956. --- a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
  1957. +++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
  1958. @@ -15,16 +15,12 @@ import android.text.TextUtils;
  1959. import androidx.annotation.VisibleForTesting;
  1960. import androidx.annotation.WorkerThread;
  1961. -import com.google.android.gms.common.ConnectionResult;
  1962. -import com.google.android.gms.common.GoogleApiAvailability;
  1963. -
  1964. import org.chromium.base.ContextUtils;
  1965. import org.chromium.base.Log;
  1966. import org.chromium.base.StrictModeContext;
  1967. import org.chromium.base.task.PostTask;
  1968. import org.chromium.components.embedder_support.util.Origin;
  1969. import org.chromium.content_public.browser.UiThreadTaskTraits;
  1970. -import org.chromium.gms.ChromiumPlayServicesAvailability;
  1971. /**
  1972. * Utility class for external authentication tools.
  1973. @@ -170,9 +166,7 @@ public class ExternalAuthUtils {
  1974. * when it is updating.
  1975. */
  1976. public boolean isGooglePlayServicesMissing(final Context context) {
  1977. - final int resultCode = checkGooglePlayServicesAvailable(context);
  1978. - return (resultCode == ConnectionResult.SERVICE_MISSING
  1979. - || resultCode == ConnectionResult.SERVICE_INVALID);
  1980. + return true;
  1981. }
  1982. /**
  1983. @@ -189,7 +183,6 @@ public class ExternalAuthUtils {
  1984. public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
  1985. Context context = ContextUtils.getApplicationContext();
  1986. final int resultCode = checkGooglePlayServicesAvailable(context);
  1987. - if (resultCode == ConnectionResult.SUCCESS) return true;
  1988. // resultCode is some kind of error.
  1989. Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
  1990. if (isUserRecoverableError(resultCode)) {
  1991. @@ -260,10 +253,7 @@ public class ExternalAuthUtils {
  1992. * @return The code produced by calling the external code
  1993. */
  1994. protected int checkGooglePlayServicesAvailable(final Context context) {
  1995. - // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in.
  1996. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
  1997. - return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context);
  1998. - }
  1999. + return 1; /*SERVICE_MISSING*/
  2000. }
  2001. /**
  2002. @@ -274,7 +264,7 @@ public class ExternalAuthUtils {
  2003. * @return true If the code represents a user-recoverable error
  2004. */
  2005. protected boolean isUserRecoverableError(final int errorCode) {
  2006. - return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
  2007. + return false;
  2008. }
  2009. /**
  2010. @@ -284,7 +274,7 @@ public class ExternalAuthUtils {
  2011. * @return a textual description of the error code
  2012. */
  2013. protected String describeError(final int errorCode) {
  2014. - return GoogleApiAvailability.getInstance().getErrorString(errorCode);
  2015. + return "";
  2016. }
  2017. /**
  2018. diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
  2019. --- a/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
  2020. +++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
  2021. @@ -9,8 +9,6 @@ import android.app.Dialog;
  2022. import android.content.Context;
  2023. import android.content.DialogInterface;
  2024. -import com.google.android.gms.common.GoogleApiAvailability;
  2025. -
  2026. import org.chromium.base.ThreadUtils;
  2027. import org.chromium.base.metrics.RecordUserAction;
  2028. @@ -89,7 +87,6 @@ public abstract class UserRecoverableErrorHandler {
  2029. if (!sNotificationShown.getAndSet(true)) {
  2030. return;
  2031. }
  2032. - GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
  2033. }
  2034. }
  2035. @@ -182,11 +179,7 @@ public abstract class UserRecoverableErrorHandler {
  2036. cancelDialog();
  2037. }
  2038. if (mDialog == null) {
  2039. - mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
  2040. - mActivity, errorCode, NO_RESPONSE_REQUIRED);
  2041. mErrorCode = errorCode;
  2042. -
  2043. - DialogUserActionRecorder.createAndAttachToDialog(mDialog);
  2044. }
  2045. // This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
  2046. if (mDialog != null && !mDialog.isShowing()) {
  2047. diff --git a/components/gcm_driver/android/BUILD.gn b/components/gcm_driver/android/BUILD.gn
  2048. --- a/components/gcm_driver/android/BUILD.gn
  2049. +++ b/components/gcm_driver/android/BUILD.gn
  2050. @@ -15,7 +15,6 @@ android_library("gcm_driver_java") {
  2051. "//content/public/android:content_java",
  2052. "//third_party/android_deps:androidx_annotation_annotation_java",
  2053. "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
  2054. - "//third_party/android_sdk:android_gcm_java",
  2055. ]
  2056. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  2057. diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
  2058. --- a/components/gcm_driver/instance_id/android/BUILD.gn
  2059. +++ b/components/gcm_driver/instance_id/android/BUILD.gn
  2060. @@ -15,7 +15,6 @@ generate_jni("test_support_jni_headers") {
  2061. android_library("instance_id_driver_java") {
  2062. deps = [
  2063. - "$google_play_services_package:google_play_services_iid_java",
  2064. "//base:base_java",
  2065. "//base:jni_java",
  2066. "//components/gcm_driver/android:gcm_driver_java",
  2067. @@ -28,14 +27,12 @@ android_library("instance_id_driver_java") {
  2068. sources = [
  2069. "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java",
  2070. - "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java",
  2071. ]
  2072. }
  2073. android_library("instance_id_driver_test_support_java") {
  2074. deps = [
  2075. ":instance_id_driver_java",
  2076. - "$google_play_services_package:google_play_services_iid_java",
  2077. "//base:base_java",
  2078. ]
  2079. diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
  2080. --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
  2081. +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
  2082. @@ -27,7 +27,6 @@ public class InstanceIDBridge {
  2083. * Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
  2084. * initialized on a background thread.
  2085. */
  2086. - private InstanceIDWithSubtype mInstanceID;
  2087. private static boolean sBlockOnAsyncTasksForTesting;
  2088. @@ -72,7 +71,7 @@ public class InstanceIDBridge {
  2089. new BridgeAsyncTask<String>() {
  2090. @Override
  2091. protected String doBackgroundWork() {
  2092. - return mInstanceID.getId();
  2093. + return "";
  2094. }
  2095. @Override
  2096. protected void sendResultToNative(String id) {
  2097. @@ -88,7 +87,7 @@ public class InstanceIDBridge {
  2098. new BridgeAsyncTask<Long>() {
  2099. @Override
  2100. protected Long doBackgroundWork() {
  2101. - return mInstanceID.getCreationTime();
  2102. + return 0L;
  2103. }
  2104. @Override
  2105. protected void sendResultToNative(Long creationTime) {
  2106. @@ -110,21 +109,7 @@ public class InstanceIDBridge {
  2107. new BridgeAsyncTask<String>() {
  2108. @Override
  2109. protected String doBackgroundWork() {
  2110. - try {
  2111. - // TODO(knollr): Migrate stored LazySubscriptionsManager data to
  2112. - // SubscriptionFlagManager.
  2113. - LazySubscriptionsManager.storeLazinessInformation(
  2114. - LazySubscriptionsManager.buildSubscriptionUniqueId(
  2115. - mSubtype, authorizedEntity),
  2116. - (flags & InstanceIDFlags.IS_LAZY) == InstanceIDFlags.IS_LAZY);
  2117. - SubscriptionFlagManager.setFlags(
  2118. - SubscriptionFlagManager.buildSubscriptionUniqueId(
  2119. - mSubtype, authorizedEntity),
  2120. - flags);
  2121. - return mInstanceID.getToken(authorizedEntity, scope);
  2122. - } catch (IOException ex) {
  2123. - return "";
  2124. - }
  2125. + return "";
  2126. }
  2127. @Override
  2128. protected void sendResultToNative(String token) {
  2129. @@ -141,21 +126,7 @@ public class InstanceIDBridge {
  2130. new BridgeAsyncTask<Boolean>() {
  2131. @Override
  2132. protected Boolean doBackgroundWork() {
  2133. - try {
  2134. - mInstanceID.deleteToken(authorizedEntity, scope);
  2135. - String subscriptionId = LazySubscriptionsManager.buildSubscriptionUniqueId(
  2136. - mSubtype, authorizedEntity);
  2137. - if (LazySubscriptionsManager.isSubscriptionLazy(subscriptionId)) {
  2138. - LazySubscriptionsManager.deletePersistedMessagesForSubscriptionId(
  2139. - subscriptionId);
  2140. - }
  2141. - SubscriptionFlagManager.clearFlags(
  2142. - SubscriptionFlagManager.buildSubscriptionUniqueId(
  2143. - mSubtype, authorizedEntity));
  2144. - return true;
  2145. - } catch (IOException ex) {
  2146. - return false;
  2147. - }
  2148. + return false;
  2149. }
  2150. @Override
  2151. protected void sendResultToNative(Boolean success) {
  2152. @@ -171,12 +142,7 @@ public class InstanceIDBridge {
  2153. new BridgeAsyncTask<Boolean>() {
  2154. @Override
  2155. protected Boolean doBackgroundWork() {
  2156. - try {
  2157. - mInstanceID.deleteInstanceID();
  2158. - return true;
  2159. - } catch (IOException ex) {
  2160. - return false;
  2161. - }
  2162. + return true;
  2163. }
  2164. @Override
  2165. protected void sendResultToNative(Boolean success) {
  2166. @@ -206,11 +172,6 @@ public class InstanceIDBridge {
  2167. @Override
  2168. @SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
  2169. protected Result doInBackground() {
  2170. - synchronized (InstanceIDBridge.this) {
  2171. - if (mInstanceID == null) {
  2172. - mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype);
  2173. - }
  2174. - }
  2175. return doBackgroundWork();
  2176. }
  2177. @Override
  2178. diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
  2179. --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
  2180. +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
  2181. @@ -10,8 +10,6 @@ import android.text.TextUtils;
  2182. import androidx.annotation.VisibleForTesting;
  2183. -import com.google.android.gms.iid.InstanceID;
  2184. -
  2185. import org.chromium.base.ContextUtils;
  2186. import java.io.IOException;
  2187. @@ -26,8 +24,6 @@ public class InstanceIDWithSubtype {
  2188. // Must match the private InstanceID.OPTION_SUBTYPE, which is guaranteed to not change.
  2189. private static final String OPTION_SUBTYPE = "subtype";
  2190. - private final InstanceID mInstanceID;
  2191. -
  2192. /**
  2193. * Cached instances. May be accessed from multiple threads; synchronize on sSubtypeInstancesLock
  2194. */
  2195. @@ -39,10 +35,6 @@ public class InstanceIDWithSubtype {
  2196. @VisibleForTesting
  2197. protected static FakeFactory sFakeFactoryForTesting;
  2198. - protected InstanceIDWithSubtype(InstanceID instanceID) {
  2199. - mInstanceID = instanceID;
  2200. - }
  2201. -
  2202. /**
  2203. * Returns an instance of this class. Unlike {@link InstanceID#getInstance(Context)}, it is not
  2204. * a singleton, but instead a different instance will be returned for each {@code subtype}.
  2205. @@ -58,11 +50,6 @@ public class InstanceIDWithSubtype {
  2206. if (sFakeFactoryForTesting != null) {
  2207. existing = sFakeFactoryForTesting.create(subtype);
  2208. } else {
  2209. - Bundle options = new Bundle();
  2210. - options.putCharSequence(OPTION_SUBTYPE, subtype);
  2211. - InstanceID instanceID =
  2212. - InstanceID.getInstance(ContextUtils.getApplicationContext(), options);
  2213. - existing = new InstanceIDWithSubtype(instanceID);
  2214. }
  2215. sSubtypeInstances.put(subtype, existing);
  2216. }
  2217. @@ -71,30 +58,25 @@ public class InstanceIDWithSubtype {
  2218. }
  2219. public String getSubtype() {
  2220. - return mInstanceID.getSubtype();
  2221. + return "";
  2222. }
  2223. public String getId() {
  2224. - return mInstanceID.getId();
  2225. + return "";
  2226. }
  2227. public long getCreationTime() {
  2228. - return mInstanceID.getCreationTime();
  2229. + return 0;
  2230. }
  2231. public void deleteInstanceID() throws IOException {
  2232. - synchronized (sSubtypeInstancesLock) {
  2233. - sSubtypeInstances.remove(mInstanceID.getSubtype());
  2234. - mInstanceID.deleteInstanceID();
  2235. - }
  2236. }
  2237. public void deleteToken(String authorizedEntity, String scope) throws IOException {
  2238. - mInstanceID.deleteToken(authorizedEntity, scope);
  2239. }
  2240. public String getToken(String authorizedEntity, String scope) throws IOException {
  2241. - return mInstanceID.getToken(authorizedEntity, scope);
  2242. + return "";
  2243. }
  2244. /** Fake subclasses can set {@link #sFakeFactoryForTesting} to an implementation of this. */
  2245. diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn
  2246. --- a/components/media_router/browser/android/BUILD.gn
  2247. +++ b/components/media_router/browser/android/BUILD.gn
  2248. @@ -11,10 +11,6 @@ android_library("java") {
  2249. resources_package = "org.chromium.components.media_router"
  2250. deps = [
  2251. ":java_resources",
  2252. - "$google_play_services_package:google_play_services_base_java",
  2253. - "$google_play_services_package:google_play_services_basement_java",
  2254. - "$google_play_services_package:google_play_services_cast_framework_java",
  2255. - "$google_play_services_package:google_play_services_cast_java",
  2256. "//base:base_java",
  2257. "//base:jni_java",
  2258. "//components/browser_ui/media/android:java",
  2259. @@ -75,8 +71,6 @@ android_library("java") {
  2260. android_library("cast_options_provider_java") {
  2261. sources = [ "java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java" ]
  2262. deps = [
  2263. - "$google_play_services_package:google_play_services_cast_framework_java",
  2264. - "$google_play_services_package:google_play_services_cast_java",
  2265. ]
  2266. }
  2267. @@ -142,9 +136,6 @@ java_library("junit") {
  2268. deps = [
  2269. ":java",
  2270. ":test_support_java",
  2271. - "$google_play_services_package:google_play_services_basement_java",
  2272. - "$google_play_services_package:google_play_services_cast_framework_java",
  2273. - "$google_play_services_package:google_play_services_cast_java",
  2274. "//base:base_java",
  2275. "//base:base_java_test_support",
  2276. "//base:base_junit_test_support",
  2277. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
  2278. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
  2279. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
  2280. @@ -10,9 +10,6 @@ import androidx.annotation.Nullable;
  2281. import androidx.annotation.VisibleForTesting;
  2282. import androidx.mediarouter.media.MediaRouter;
  2283. -import com.google.android.gms.common.ConnectionResult;
  2284. -import com.google.android.gms.common.GoogleApiAvailability;
  2285. -
  2286. import org.chromium.base.ContextUtils;
  2287. import org.chromium.base.Log;
  2288. import org.chromium.base.StrictModeContext;
  2289. @@ -42,20 +39,7 @@ public class BrowserMediaRouter implements MediaRouteManager {
  2290. new MediaRouteProvider.Factory() {
  2291. @Override
  2292. public void addProviders(MediaRouteManager manager) {
  2293. - int googleApiAvailabilityResult =
  2294. - GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
  2295. - ContextUtils.getApplicationContext(),
  2296. - MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
  2297. - if (googleApiAvailabilityResult != ConnectionResult.SUCCESS) {
  2298. - GoogleApiAvailability.getInstance().showErrorNotification(
  2299. - ContextUtils.getApplicationContext(), googleApiAvailabilityResult);
  2300. - return;
  2301. - }
  2302. - MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager);
  2303. - manager.addMediaRouteProvider(cafProvider);
  2304. - MediaRouteProvider remotingProvider =
  2305. - CafRemotingMediaRouteProvider.create(manager);
  2306. - manager.addMediaRouteProvider(remotingProvider);
  2307. + return;
  2308. }
  2309. };
  2310. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java
  2311. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java
  2312. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java
  2313. @@ -4,9 +4,6 @@
  2314. package org.chromium.components.media_router;
  2315. -import com.google.android.gms.cast.CastDevice;
  2316. -import com.google.android.gms.cast.RemoteMediaPlayer;
  2317. -
  2318. import org.chromium.components.browser_ui.media.MediaNotificationInfo;
  2319. import org.chromium.services.media_session.MediaMetadata;
  2320. @@ -18,36 +15,4 @@ public class CastSessionUtil {
  2321. // The value is borrowed from the Android Cast SDK code to match their behavior.
  2322. public static final double MIN_VOLUME_LEVEL_DELTA = 1e-7;
  2323. -
  2324. - /**
  2325. - * Builds a MediaMetadata from the given CastDevice and MediaPlayer, and sets it on the builder
  2326. - */
  2327. - public static void setNotificationMetadata(MediaNotificationInfo.Builder builder,
  2328. - CastDevice castDevice, RemoteMediaPlayer mediaPlayer) {
  2329. - MediaMetadata notificationMetadata = new MediaMetadata("", "", "");
  2330. - builder.setMetadata(notificationMetadata);
  2331. -
  2332. - if (castDevice != null) notificationMetadata.setTitle(castDevice.getFriendlyName());
  2333. -
  2334. - if (mediaPlayer == null) return;
  2335. -
  2336. - com.google.android.gms.cast.MediaInfo info = mediaPlayer.getMediaInfo();
  2337. - if (info == null) return;
  2338. -
  2339. - com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata();
  2340. - if (metadata == null) return;
  2341. -
  2342. - String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE);
  2343. - if (title != null) notificationMetadata.setTitle(title);
  2344. -
  2345. - String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST);
  2346. - if (artist == null) {
  2347. - artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST);
  2348. - }
  2349. - if (artist != null) notificationMetadata.setArtist(artist);
  2350. -
  2351. - String album =
  2352. - metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE);
  2353. - if (album != null) notificationMetadata.setAlbum(album);
  2354. - }
  2355. }
  2356. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java
  2357. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java
  2358. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java
  2359. @@ -8,41 +8,24 @@ import androidx.annotation.Nullable;
  2360. import androidx.mediarouter.media.MediaRouter;
  2361. import androidx.mediarouter.media.MediaRouter.RouteInfo;
  2362. -import com.google.android.gms.cast.CastDevice;
  2363. -
  2364. /**
  2365. * A common descriptor of a device that can present some URI.
  2366. */
  2367. public class MediaSink {
  2368. private static final String CAST_SINK_URN_PREFIX = "urn:x-org.chromium:media:sink:cast-";
  2369. - private final String mId;
  2370. - private final String mName;
  2371. - private final CastDevice mDevice;
  2372. -
  2373. - /**
  2374. - * Constructor.
  2375. - * @param id A unique identifier of the sink.
  2376. - * @param name A user friendly name of the sink.
  2377. - * @param device {@link CastDevice} corresponding to this sink.
  2378. - */
  2379. - public MediaSink(String id, String name, CastDevice device) {
  2380. - mId = id;
  2381. - mName = name;
  2382. - mDevice = device;
  2383. - }
  2384. /**
  2385. * @return The unique identifier of the sink.
  2386. */
  2387. public String getId() {
  2388. - return mId;
  2389. + return "";
  2390. }
  2391. /**
  2392. * @return The user friendly name of the sink.
  2393. */
  2394. public String getName() {
  2395. - return mName;
  2396. + return "";
  2397. }
  2398. /**
  2399. @@ -52,17 +35,8 @@ public class MediaSink {
  2400. return CAST_SINK_URN_PREFIX + getId();
  2401. }
  2402. - public CastDevice getDevice() {
  2403. - return mDevice;
  2404. - }
  2405. -
  2406. @Override
  2407. public boolean equals(Object o) {
  2408. - if (o == this) return true;
  2409. - if (o instanceof MediaSink) {
  2410. - MediaSink other = (MediaSink) o;
  2411. - return mId.equals(other.getId()) && mName.equals(other.getName());
  2412. - }
  2413. return false;
  2414. }
  2415. @@ -70,23 +44,15 @@ public class MediaSink {
  2416. public int hashCode() {
  2417. final int prime = 31;
  2418. int result = 1;
  2419. - result = prime * result + ((mId == null) ? 0 : mId.hashCode());
  2420. - result = prime * result + ((mName == null) ? 0 : mName.hashCode());
  2421. return result;
  2422. }
  2423. - @Override
  2424. - public String toString() {
  2425. - return String.format("MediaSink: %s, %s", getId(), getName());
  2426. - }
  2427. -
  2428. /**
  2429. * @param route The route information provided by Android.
  2430. * @return A new MediaSink instance corresponding to the specified {@link RouteInfo}.
  2431. */
  2432. public static MediaSink fromRoute(MediaRouter.RouteInfo route) {
  2433. - return new MediaSink(
  2434. - route.getId(), route.getName(), CastDevice.getFromBundle(route.getExtras()));
  2435. + return null;
  2436. }
  2437. /**
  2438. @@ -97,10 +63,6 @@ public class MediaSink {
  2439. */
  2440. @Nullable
  2441. public static MediaSink fromSinkId(String sinkId, MediaRouter router) {
  2442. - for (MediaRouter.RouteInfo route : router.getRoutes()) {
  2443. - MediaSink sink = MediaSink.fromRoute(route);
  2444. - if (sink.getId().equals(sinkId)) return sink;
  2445. - }
  2446. return null;
  2447. }
  2448. }
  2449. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java
  2450. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java
  2451. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java
  2452. @@ -4,10 +4,6 @@
  2453. package org.chromium.components.media_router;
  2454. -import com.google.android.gms.cast.MediaInfo;
  2455. -import com.google.android.gms.cast.MediaMetadata;
  2456. -import com.google.android.gms.cast.MediaStatus;
  2457. -
  2458. import org.chromium.base.annotations.CalledByNative;
  2459. import org.chromium.base.annotations.JNINamespace;
  2460. @@ -17,11 +13,6 @@ import org.chromium.base.annotations.JNINamespace;
  2461. */
  2462. @JNINamespace("media_router")
  2463. public class MediaStatusBridge {
  2464. - private MediaStatus mStatus;
  2465. -
  2466. - public MediaStatusBridge(MediaStatus status) {
  2467. - mStatus = status;
  2468. - }
  2469. /**
  2470. * Gets the play state of the stream. Return values are defined as such:
  2471. @@ -34,7 +25,7 @@ public class MediaStatusBridge {
  2472. */
  2473. @CalledByNative
  2474. public int playerState() {
  2475. - return mStatus.getPlayerState();
  2476. + return 0;
  2477. }
  2478. /**
  2479. @@ -48,7 +39,7 @@ public class MediaStatusBridge {
  2480. */
  2481. @CalledByNative
  2482. public int idleReason() {
  2483. - return mStatus.getIdleReason();
  2484. + return 0;
  2485. }
  2486. /**
  2487. @@ -57,13 +48,7 @@ public class MediaStatusBridge {
  2488. */
  2489. @CalledByNative
  2490. public String title() {
  2491. - MediaInfo info = mStatus.getMediaInfo();
  2492. - if (info == null) return "";
  2493. -
  2494. - MediaMetadata metadata = info.getMetadata();
  2495. - if (metadata == null) return "";
  2496. -
  2497. - return metadata.getString(MediaMetadata.KEY_TITLE);
  2498. + return "";
  2499. }
  2500. /**
  2501. @@ -71,7 +56,7 @@ public class MediaStatusBridge {
  2502. */
  2503. @CalledByNative
  2504. public boolean canPlayPause() {
  2505. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_PAUSE);
  2506. + return false;
  2507. }
  2508. /**
  2509. @@ -79,7 +64,7 @@ public class MediaStatusBridge {
  2510. */
  2511. @CalledByNative
  2512. public boolean canMute() {
  2513. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_TOGGLE_MUTE);
  2514. + return false;
  2515. }
  2516. /**
  2517. @@ -87,7 +72,7 @@ public class MediaStatusBridge {
  2518. */
  2519. @CalledByNative
  2520. public boolean canSetVolume() {
  2521. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SET_VOLUME);
  2522. + return false;
  2523. }
  2524. /**
  2525. @@ -95,7 +80,7 @@ public class MediaStatusBridge {
  2526. */
  2527. @CalledByNative
  2528. public boolean canSeek() {
  2529. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SEEK);
  2530. + return false;
  2531. }
  2532. /**
  2533. @@ -103,7 +88,7 @@ public class MediaStatusBridge {
  2534. */
  2535. @CalledByNative
  2536. public boolean isMuted() {
  2537. - return mStatus.isMute();
  2538. + return false;
  2539. }
  2540. /**
  2541. @@ -113,7 +98,7 @@ public class MediaStatusBridge {
  2542. */
  2543. @CalledByNative
  2544. public double volume() {
  2545. - return mStatus.getStreamVolume();
  2546. + return 0.0;
  2547. }
  2548. /**
  2549. @@ -122,10 +107,7 @@ public class MediaStatusBridge {
  2550. */
  2551. @CalledByNative
  2552. public long duration() {
  2553. - MediaInfo info = mStatus.getMediaInfo();
  2554. - if (info == null) return 0;
  2555. -
  2556. - return info.getStreamDuration();
  2557. + return 0;
  2558. }
  2559. /**
  2560. @@ -133,6 +115,6 @@ public class MediaStatusBridge {
  2561. */
  2562. @CalledByNative
  2563. public long currentTime() {
  2564. - return mStatus.getStreamPosition();
  2565. + return 0;
  2566. }
  2567. }
  2568. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java
  2569. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java
  2570. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java
  2571. @@ -6,10 +6,6 @@ package org.chromium.components.media_router.caf;
  2572. import android.content.Intent;
  2573. -import com.google.android.gms.cast.CastDevice;
  2574. -import com.google.android.gms.cast.MediaStatus;
  2575. -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
  2576. -
  2577. import org.chromium.components.browser_ui.media.MediaNotificationInfo;
  2578. import org.chromium.components.browser_ui.media.MediaNotificationListener;
  2579. import org.chromium.components.browser_ui.media.MediaNotificationManager;
  2580. @@ -61,20 +57,6 @@ public abstract class BaseNotificationController
  2581. public void onStatusUpdated() {
  2582. if (mNotificationBuilder == null) return;
  2583. if (!mSessionController.isConnected()) return;
  2584. -
  2585. - MediaStatus mediaStatus = mSessionController.getRemoteMediaClient().getMediaStatus();
  2586. - if (mediaStatus == null) return;
  2587. -
  2588. - int playerState = mediaStatus.getPlayerState();
  2589. - if (playerState == MediaStatus.PLAYER_STATE_PAUSED
  2590. - || playerState == MediaStatus.PLAYER_STATE_PLAYING) {
  2591. - mNotificationBuilder.setPaused(playerState != MediaStatus.PLAYER_STATE_PLAYING);
  2592. - mNotificationBuilder.setActions(
  2593. - MediaNotificationInfo.ACTION_STOP | MediaNotificationInfo.ACTION_PLAY_PAUSE);
  2594. - } else {
  2595. - mNotificationBuilder.setActions(MediaNotificationInfo.ACTION_STOP);
  2596. - }
  2597. - MediaRouterClient.getInstance().showNotification(mNotificationBuilder.build());
  2598. }
  2599. /** Called when media metadata updated. */
  2600. @@ -90,30 +72,6 @@ public abstract class BaseNotificationController
  2601. mNotificationBuilder.setMetadata(notificationMetadata);
  2602. if (!mSessionController.isConnected()) return;
  2603. -
  2604. - CastDevice castDevice = mSessionController.getSession().getCastDevice();
  2605. - if (castDevice != null) notificationMetadata.setTitle(castDevice.getFriendlyName());
  2606. -
  2607. - RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient();
  2608. -
  2609. - com.google.android.gms.cast.MediaInfo info = remoteMediaClient.getMediaInfo();
  2610. - if (info == null) return;
  2611. -
  2612. - com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata();
  2613. - if (metadata == null) return;
  2614. -
  2615. - String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE);
  2616. - if (title != null) notificationMetadata.setTitle(title);
  2617. -
  2618. - String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST);
  2619. - if (artist == null) {
  2620. - artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST);
  2621. - }
  2622. - if (artist != null) notificationMetadata.setArtist(artist);
  2623. -
  2624. - String album =
  2625. - metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE);
  2626. - if (album != null) notificationMetadata.setAlbum(album);
  2627. }
  2628. /////////////////////////////////////////////////////////////////////////////////////////////
  2629. @@ -122,15 +80,11 @@ public abstract class BaseNotificationController
  2630. @Override
  2631. public void onPlay(int actionSource) {
  2632. if (!mSessionController.isConnected()) return;
  2633. -
  2634. - mSessionController.getRemoteMediaClient().play();
  2635. }
  2636. @Override
  2637. public void onPause(int actionSource) {
  2638. if (!mSessionController.isConnected()) return;
  2639. -
  2640. - mSessionController.getRemoteMediaClient().pause();
  2641. }
  2642. @Override
  2643. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java
  2644. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java
  2645. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java
  2646. @@ -6,12 +6,7 @@ package org.chromium.components.media_router.caf;
  2647. import androidx.annotation.Nullable;
  2648. -import com.google.android.gms.cast.CastDevice;
  2649. -import com.google.android.gms.cast.framework.CastSession;
  2650. -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
  2651. -
  2652. import org.chromium.base.Log;
  2653. -import org.chromium.components.media_router.CastSessionUtil;
  2654. import org.chromium.components.media_router.FlingingController;
  2655. import org.chromium.components.media_router.MediaSink;
  2656. import org.chromium.components.media_router.MediaSource;
  2657. @@ -42,15 +37,12 @@ public abstract class BaseSessionController {
  2658. void onMetadataUpdated();
  2659. }
  2660. - private CastSession mCastSession;
  2661. private final CafBaseMediaRouteProvider mProvider;
  2662. private CreateRouteRequestInfo mRouteCreationInfo;
  2663. - private final RemoteMediaClient.Callback mRemoteMediaClientCallback;
  2664. private final List<Callback> mCallbacks = new ArrayList<>();
  2665. public BaseSessionController(CafBaseMediaRouteProvider provider) {
  2666. mProvider = provider;
  2667. - mRemoteMediaClientCallback = new RemoteMediaClientCallback();
  2668. }
  2669. public void addCallback(Callback callback) {
  2670. @@ -63,9 +55,6 @@ public abstract class BaseSessionController {
  2671. public void requestSessionLaunch() {
  2672. mRouteCreationInfo = mProvider.getPendingCreateRouteRequestInfo();
  2673. - CastUtils.getCastContext().setReceiverApplicationId(
  2674. - mRouteCreationInfo.source.getApplicationId());
  2675. -
  2676. // When the user clicks a route on the MediaRouteChooserDialog, we intercept the click event
  2677. // and do not select the route. Instead the route selection is postponed to here. This will
  2678. // trigger CAF to launch the session.
  2679. @@ -84,69 +73,22 @@ public abstract class BaseSessionController {
  2680. return mRouteCreationInfo;
  2681. }
  2682. - public CastSession getSession() {
  2683. - return mCastSession;
  2684. - }
  2685. -
  2686. - public RemoteMediaClient getRemoteMediaClient() {
  2687. - return isConnected() ? mCastSession.getRemoteMediaClient() : null;
  2688. - }
  2689. -
  2690. public abstract BaseNotificationController getNotificationController();
  2691. public void endSession() {
  2692. - CastUtils.getCastContext().getSessionManager().endCurrentSession(/* stopCasting= */ true);
  2693. - CastUtils.getCastContext().setReceiverApplicationId(null);
  2694. }
  2695. public List<String> getCapabilities() {
  2696. List<String> capabilities = new ArrayList<>();
  2697. - if (mCastSession == null || !mCastSession.isConnected()) return capabilities;
  2698. - CastDevice device = mCastSession.getCastDevice();
  2699. - if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_IN)) {
  2700. - capabilities.add("audio_in");
  2701. - }
  2702. - if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_OUT)) {
  2703. - capabilities.add("audio_out");
  2704. - }
  2705. - if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_IN)) {
  2706. - capabilities.add("video_in");
  2707. - }
  2708. - if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_OUT)) {
  2709. - capabilities.add("video_out");
  2710. - }
  2711. return capabilities;
  2712. }
  2713. public boolean isConnected() {
  2714. - return mCastSession != null && mCastSession.isConnected();
  2715. + return false;
  2716. }
  2717. private void updateRemoteMediaClient(String message) {
  2718. if (!isConnected()) return;
  2719. -
  2720. - mCastSession.getRemoteMediaClient().onMessageReceived(
  2721. - mCastSession.getCastDevice(), CastSessionUtil.MEDIA_NAMESPACE, message);
  2722. - }
  2723. -
  2724. - /** Attaches the controller to the current {@link CastSession}. */
  2725. - public void attachToCastSession(CastSession session) {
  2726. - mCastSession = session;
  2727. - RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient();
  2728. - if (uncheckedRemoteMediaClient != null) {
  2729. - uncheckedRemoteMediaClient.registerCallback(mRemoteMediaClientCallback);
  2730. - }
  2731. - }
  2732. -
  2733. - /** Detaches the controller from any {@link CastSession}. */
  2734. - public void detachFromCastSession() {
  2735. - if (mCastSession == null) return;
  2736. -
  2737. - RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient();
  2738. - if (uncheckedRemoteMediaClient != null) {
  2739. - uncheckedRemoteMediaClient.unregisterCallback(mRemoteMediaClientCallback);
  2740. - }
  2741. - mCastSession = null;
  2742. }
  2743. /** Called when session started. */
  2744. @@ -163,50 +105,12 @@ public abstract class BaseSessionController {
  2745. return mProvider;
  2746. }
  2747. - /**
  2748. - * All sub-classes need to register this method to listen to messages of the namespaces they are
  2749. - * interested in.
  2750. - */
  2751. - protected void onMessageReceived(CastDevice castDevice, String namespace, String message) {
  2752. - Log.d(TAG,
  2753. - "Received message from Cast device: namespace=\"" + namespace + "\" message=\""
  2754. - + message + "\"");
  2755. - if (CastSessionUtil.MEDIA_NAMESPACE.equals(namespace)) {
  2756. - updateRemoteMediaClient(message);
  2757. - }
  2758. - }
  2759. -
  2760. - private class RemoteMediaClientCallback extends RemoteMediaClient.Callback {
  2761. - @Override
  2762. - public void onStatusUpdated() {
  2763. - BaseSessionController.this.onStatusUpdated();
  2764. - }
  2765. -
  2766. - @Override
  2767. - public void onMetadataUpdated() {
  2768. - BaseSessionController.this.onMetadataUpdated();
  2769. - }
  2770. - }
  2771. -
  2772. - protected void onStatusUpdated() {
  2773. - notifyCallback((Callback callback) -> callback.onStatusUpdated());
  2774. - }
  2775. -
  2776. - protected void onMetadataUpdated() {
  2777. - notifyCallback((Callback callback) -> callback.onMetadataUpdated());
  2778. - }
  2779. -
  2780. - @Nullable
  2781. - public FlingingController getFlingingController() {
  2782. - return null;
  2783. - }
  2784. -
  2785. /**
  2786. * Helper message to get the session ID of the attached session. For stubbing in tests as
  2787. * {@link CastSession#getSessionId()} is final.
  2788. */
  2789. public String getSessionId() {
  2790. - return isConnected() ? getSession().getSessionId() : null;
  2791. + return null;
  2792. }
  2793. private void notifyCallback(NotifyCallbackAction action) {
  2794. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java
  2795. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java
  2796. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java
  2797. @@ -12,9 +12,6 @@ import androidx.mediarouter.media.MediaRouteSelector;
  2798. import androidx.mediarouter.media.MediaRouter;
  2799. import androidx.mediarouter.media.MediaRouter.RouteInfo;
  2800. -import com.google.android.gms.cast.framework.CastSession;
  2801. -import com.google.android.gms.cast.framework.SessionManagerListener;
  2802. -
  2803. import org.chromium.base.Log;
  2804. import org.chromium.components.media_router.DiscoveryCallback;
  2805. import org.chromium.components.media_router.DiscoveryDelegate;
  2806. @@ -37,7 +34,7 @@ import java.util.Set;
  2807. * A base provider containing common implementation for CAF-based {@link MediaRouteProvider}s.
  2808. */
  2809. public abstract class CafBaseMediaRouteProvider
  2810. - implements MediaRouteProvider, DiscoveryDelegate, SessionManagerListener<CastSession> {
  2811. + implements MediaRouteProvider, DiscoveryDelegate {
  2812. private static final String TAG = "CafMR";
  2813. protected static final List<MediaSink> NO_SINKS = Collections.emptyList();
  2814. @@ -153,7 +150,6 @@ public abstract class CafBaseMediaRouteProvider
  2815. // current session and clean up the routes (can't wait for session ending as the signal
  2816. // might be delayed).
  2817. sessionController().endSession();
  2818. - handleSessionEnd();
  2819. }
  2820. if (mPendingCreateRouteRequestInfo != null) {
  2821. cancelPendingRequest("Request replaced");
  2822. @@ -182,9 +178,6 @@ public abstract class CafBaseMediaRouteProvider
  2823. mManager.onCreateRouteRequestError("The sink does not exist", nativeRequestId);
  2824. }
  2825. - CastUtils.getCastContext().getSessionManager().addSessionManagerListener(
  2826. - this, CastSession.class);
  2827. -
  2828. mPendingCreateRouteRequestInfo = new CreateRouteRequestInfo(source, sink, presentationId,
  2829. origin, tabId, isOffTheRecord, nativeRequestId, targetRouteInfo);
  2830. @@ -211,100 +204,6 @@ public abstract class CafBaseMediaRouteProvider
  2831. removeRoute(routeId, /* error= */ null);
  2832. }
  2833. - ///////////////////////////////////////////////////////
  2834. - // SessionManagerListener implementation begin
  2835. - ///////////////////////////////////////////////////////
  2836. -
  2837. - @Override
  2838. - public final void onSessionStarting(CastSession session) {
  2839. - // The session is not connected yet at this point so this is no-op.
  2840. - }
  2841. -
  2842. - @Override
  2843. - public void onSessionStartFailed(CastSession session, int error) {
  2844. - removeAllRoutes("Launch error");
  2845. - cancelPendingRequest("Launch error");
  2846. - }
  2847. -
  2848. - @Override
  2849. - public void onSessionStarted(CastSession session, String sessionId) {
  2850. - Log.d(TAG, "onSessionStarted");
  2851. -
  2852. - if (session != CastUtils.getCastContext().getSessionManager().getCurrentCastSession()) {
  2853. - // Sometimes the session start signal might come in for an earlier launch request, which
  2854. - // should be ignored.
  2855. - return;
  2856. - }
  2857. -
  2858. - if (session == sessionController().getSession() || mPendingCreateRouteRequestInfo == null) {
  2859. - // Early return for any possible case that the session start signal comes in twice for
  2860. - // the same session.
  2861. - return;
  2862. - }
  2863. - handleSessionStart(session, sessionId);
  2864. - }
  2865. -
  2866. - @Override
  2867. - public final void onSessionResumed(CastSession session, boolean wasSuspended) {
  2868. - sessionController().attachToCastSession(session);
  2869. - }
  2870. -
  2871. - @Override
  2872. - public final void onSessionResuming(CastSession session, String sessionId) {}
  2873. -
  2874. - @Override
  2875. - public final void onSessionResumeFailed(CastSession session, int error) {}
  2876. -
  2877. - @Override
  2878. - public final void onSessionEnding(CastSession session) {
  2879. - handleSessionEnd();
  2880. - }
  2881. -
  2882. - @Override
  2883. - public final void onSessionEnded(CastSession session, int error) {
  2884. - Log.d(TAG, "Session ended with error code " + error);
  2885. - handleSessionEnd();
  2886. - }
  2887. -
  2888. - @Override
  2889. - public final void onSessionSuspended(CastSession session, int reason) {
  2890. - sessionController().detachFromCastSession();
  2891. - }
  2892. -
  2893. - ///////////////////////////////////////////////////////
  2894. - // SessionManagerListener implementation end
  2895. - ///////////////////////////////////////////////////////
  2896. -
  2897. - protected void handleSessionStart(CastSession session, String sessionId) {
  2898. - sessionController().attachToCastSession(session);
  2899. - sessionController().onSessionStarted();
  2900. -
  2901. - MediaSink sink = mPendingCreateRouteRequestInfo.sink;
  2902. - MediaSource source = mPendingCreateRouteRequestInfo.source;
  2903. - MediaRoute route = new MediaRoute(
  2904. - sink.getId(), source.getSourceId(), mPendingCreateRouteRequestInfo.presentationId);
  2905. - addRoute(route, mPendingCreateRouteRequestInfo.origin, mPendingCreateRouteRequestInfo.tabId,
  2906. - mPendingCreateRouteRequestInfo.nativeRequestId, /* wasLaunched= */ true);
  2907. -
  2908. - mPendingCreateRouteRequestInfo = null;
  2909. - }
  2910. -
  2911. - private void handleSessionEnd() {
  2912. - if (mPendingCreateRouteRequestInfo != null) {
  2913. - // The Cast SDK notifies about session ending when a route is unselected, even when
  2914. - // there's no current session. Because CastSessionController unselects the route to set
  2915. - // the receiver app ID, this needs to be guarded by a pending request null check to make
  2916. - // sure the listener is not unregistered during a session relaunch.
  2917. - return;
  2918. - }
  2919. - sessionController().onSessionEnded();
  2920. - sessionController().detachFromCastSession();
  2921. - getAndroidMediaRouter().selectRoute(getAndroidMediaRouter().getDefaultRoute());
  2922. - terminateAllRoutes();
  2923. - CastUtils.getCastContext().getSessionManager().removeSessionManagerListener(
  2924. - this, CastSession.class);
  2925. - }
  2926. -
  2927. private void cancelPendingRequest(String error) {
  2928. if (mPendingCreateRouteRequestInfo == null) return;
  2929. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java
  2930. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java
  2931. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java
  2932. @@ -11,8 +11,6 @@ import androidx.annotation.Nullable;
  2933. import androidx.annotation.VisibleForTesting;
  2934. import androidx.mediarouter.media.MediaRouter;
  2935. -import com.google.android.gms.cast.framework.CastSession;
  2936. -
  2937. import org.chromium.base.Log;
  2938. import org.chromium.components.media_router.BrowserMediaRouter;
  2939. import org.chromium.components.media_router.ClientRecord;
  2940. @@ -147,20 +145,6 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider {
  2941. return mMessageHandler;
  2942. }
  2943. - @Override
  2944. - protected void handleSessionStart(CastSession session, String sessionId) {
  2945. - super.handleSessionStart(session, sessionId);
  2946. -
  2947. - for (ClientRecord clientRecord : mClientIdToRecords.values()) {
  2948. - // Should be exactly one instance of MediaRoute/ClientRecord at this moment.
  2949. - mMessageHandler.sendReceiverActionToClient(clientRecord.routeId,
  2950. - sessionController().getSink(), clientRecord.clientId, "cast");
  2951. - }
  2952. -
  2953. - mMessageHandler.onSessionStarted();
  2954. - sessionController().getSession().getRemoteMediaClient().requestStatus();
  2955. - }
  2956. -
  2957. @Override
  2958. protected void addRoute(
  2959. MediaRoute route, String origin, int tabId, int nativeRequestId, boolean wasLaunched) {
  2960. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java
  2961. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java
  2962. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java
  2963. @@ -13,10 +13,6 @@ import android.util.SparseArray;
  2964. import androidx.annotation.VisibleForTesting;
  2965. import androidx.collection.ArrayMap;
  2966. -import com.google.android.gms.cast.ApplicationMetadata;
  2967. -import com.google.android.gms.common.api.PendingResult;
  2968. -import com.google.android.gms.common.api.Status;
  2969. -
  2970. import org.json.JSONArray;
  2971. import org.json.JSONException;
  2972. import org.json.JSONObject;
  2973. @@ -345,49 +341,7 @@ public class CafMessageHandler {
  2974. final int sequenceNumber) throws JSONException {
  2975. if (volumeMessage == null) return false;
  2976. if (!mSessionController.isConnected()) return false;
  2977. - boolean shouldWaitForVolumeChange = false;
  2978. - try {
  2979. - if (!volumeMessage.isNull("muted")) {
  2980. - boolean newMuted = volumeMessage.getBoolean("muted");
  2981. - if (mSessionController.getSession().isMute() != newMuted) {
  2982. - mSessionController.getSession().setMute(newMuted);
  2983. - shouldWaitForVolumeChange = true;
  2984. - }
  2985. - }
  2986. - if (!volumeMessage.isNull("level")) {
  2987. - double newLevel = volumeMessage.getDouble("level");
  2988. - double currentLevel = mSessionController.getSession().getVolume();
  2989. - if (!Double.isNaN(currentLevel)
  2990. - && Math.abs(currentLevel - newLevel)
  2991. - > CastSessionUtil.MIN_VOLUME_LEVEL_DELTA) {
  2992. - mSessionController.getSession().setVolume(newLevel);
  2993. - shouldWaitForVolumeChange = true;
  2994. - }
  2995. - }
  2996. - } catch (IOException | IllegalStateException e) {
  2997. - Log.e(TAG, "Failed to send volume command: " + e);
  2998. - return false;
  2999. - }
  3000. -
  3001. - // For each successful volume message we need to respond with an empty "v2_message" so the
  3002. - // Cast Web SDK can call the success callback of the page. If we expect the volume to change
  3003. - // as the result of the command, we're relying on {@link Cast.CastListener#onVolumeChanged}
  3004. - // to get called by the Android Cast SDK when the receiver status is updated. We keep the
  3005. - // sequence number until then. If the volume doesn't change as the result of the command, we
  3006. - // won't get notified by the Android SDK
  3007. - if (shouldWaitForVolumeChange) {
  3008. - mVolumeRequests.add(new RequestRecord(clientId, sequenceNumber));
  3009. - } else {
  3010. - // It's usually bad to have request and response on the same call stack so post the
  3011. - // response to the Android message loop.
  3012. - mHandler.post(new Runnable() {
  3013. - @Override
  3014. - public void run() {
  3015. - onVolumeChanged(clientId, sequenceNumber);
  3016. - }
  3017. - });
  3018. - }
  3019. - return true;
  3020. + return false;
  3021. }
  3022. @VisibleForTesting
  3023. @@ -675,19 +629,11 @@ public class CafMessageHandler {
  3024. try {
  3025. // "volume" is a part of "receiver" initialized below.
  3026. JSONObject jsonVolume = new JSONObject();
  3027. - jsonVolume.put("level", mSessionController.getSession().getVolume());
  3028. - jsonVolume.put("muted", mSessionController.getSession().isMute());
  3029. // "receiver" is a part of "message" initialized below.
  3030. JSONObject jsonReceiver = new JSONObject();
  3031. - jsonReceiver.put(
  3032. - "label", mSessionController.getSession().getCastDevice().getDeviceId());
  3033. - jsonReceiver.put("friendlyName",
  3034. - mSessionController.getSession().getCastDevice().getFriendlyName());
  3035. jsonReceiver.put("capabilities", toJSONArray(mSessionController.getCapabilities()));
  3036. jsonReceiver.put("volume", jsonVolume);
  3037. - jsonReceiver.put(
  3038. - "isActiveInput", mSessionController.getSession().getActiveInputState());
  3039. jsonReceiver.put("displayStatus", null);
  3040. jsonReceiver.put("receiverType", "cast");
  3041. @@ -700,23 +646,14 @@ public class CafMessageHandler {
  3042. JSONObject jsonMessage = new JSONObject();
  3043. jsonMessage.put("sessionId", mSessionController.getSessionId());
  3044. - jsonMessage.put("statusText", mSessionController.getSession().getApplicationStatus());
  3045. jsonMessage.put("receiver", jsonReceiver);
  3046. jsonMessage.put("namespaces", jsonNamespaces);
  3047. jsonMessage.put("media", toJSONArray(new ArrayList<>()));
  3048. jsonMessage.put("status", "connected");
  3049. jsonMessage.put("transportId", "web-4");
  3050. - ApplicationMetadata applicationMetadata =
  3051. - mSessionController.getSession().getApplicationMetadata();
  3052. - if (applicationMetadata != null) {
  3053. - jsonMessage.put("appId", applicationMetadata.getApplicationId());
  3054. - } else {
  3055. - jsonMessage.put("appId",
  3056. - mSessionController.getRouteCreationInfo().source.getApplicationId());
  3057. - }
  3058. - jsonMessage.put("displayName",
  3059. - mSessionController.getSession().getCastDevice().getFriendlyName());
  3060. + jsonMessage.put("appId",
  3061. + mSessionController.getRouteCreationInfo().source.getApplicationId());
  3062. return jsonMessage.toString();
  3063. } catch (JSONException e) {
  3064. @@ -797,32 +734,6 @@ public class CafMessageHandler {
  3065. boolean sendStringCastMessage(
  3066. String message, String namespace, String clientId, int sequenceNumber) {
  3067. if (!mSessionController.isConnected()) return false;
  3068. -
  3069. - PendingResult<Status> pendingResult =
  3070. - mSessionController.getSession().sendMessage(namespace, message);
  3071. - if (!TextUtils.equals(namespace, CastSessionUtil.MEDIA_NAMESPACE)) {
  3072. - // Media commands wait for the media status update as a result.
  3073. - pendingResult.setResultCallback(
  3074. - (Status result) -> onSendAppMessageResult(result, clientId, sequenceNumber));
  3075. - }
  3076. - return true;
  3077. - }
  3078. -
  3079. - /**
  3080. - * Notifies a client that an app message has been sent.
  3081. - * @param clientId The client id the message is sent from.
  3082. - * @param sequenceNumber The sequence number of the message.
  3083. - */
  3084. - void onSendAppMessageResult(Status result, String clientId, int sequenceNumber) {
  3085. - if (!result.isSuccess()) {
  3086. - // TODO(avayvod): should actually report back to the page.
  3087. - // See https://crbug.com/550445.
  3088. - Log.e(TAG, "Failed to send the message: " + result);
  3089. - return;
  3090. - }
  3091. -
  3092. - // App messages wait for the empty message with the sequence
  3093. - // number.
  3094. - sendEnclosedMessageToClient(clientId, "app_message", null, sequenceNumber);
  3095. + return false;
  3096. }
  3097. }
  3098. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java
  3099. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java
  3100. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java
  3101. @@ -9,8 +9,6 @@ import android.net.Uri;
  3102. import androidx.annotation.Nullable;
  3103. import androidx.mediarouter.media.MediaRouteSelector;
  3104. -import com.google.android.gms.cast.CastMediaControlIntent;
  3105. -
  3106. import org.chromium.components.media_router.MediaSource;
  3107. import java.util.Arrays;
  3108. @@ -106,13 +104,7 @@ public class CastMediaSource implements MediaSource {
  3109. */
  3110. @Override
  3111. public MediaRouteSelector buildRouteSelector() {
  3112. - try {
  3113. - return new MediaRouteSelector.Builder()
  3114. - .addControlCategory(CastMediaControlIntent.categoryForCast(mApplicationId))
  3115. - .build();
  3116. - } catch (IllegalArgumentException e) {
  3117. - return null;
  3118. - }
  3119. + return null;
  3120. }
  3121. /**
  3122. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java
  3123. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java
  3124. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java
  3125. @@ -6,28 +6,8 @@ package org.chromium.components.media_router.caf;
  3126. import android.content.Context;
  3127. -import com.google.android.gms.cast.LaunchOptions;
  3128. -import com.google.android.gms.cast.framework.CastOptions;
  3129. -import com.google.android.gms.cast.framework.OptionsProvider;
  3130. -import com.google.android.gms.cast.framework.SessionProvider;
  3131. -
  3132. import java.util.List;
  3133. /** {@link OptionsProvider} implementation for Chrome MR. */
  3134. -public class CastOptionsProvider implements OptionsProvider {
  3135. - @Override
  3136. - public CastOptions getCastOptions(Context context) {
  3137. - return new CastOptions.Builder()
  3138. - .setCastMediaOptions(null)
  3139. - .setEnableReconnectionService(false)
  3140. - .setLaunchOptions(new LaunchOptions.Builder().setRelaunchIfRunning(true).build())
  3141. - .setResumeSavedSession(false)
  3142. - .setStopReceiverApplicationWhenEndingSession(true)
  3143. - .build();
  3144. - }
  3145. -
  3146. - @Override
  3147. - public List<SessionProvider> getAdditionalSessionProviders(Context context) {
  3148. - return null;
  3149. - }
  3150. +public class CastOptionsProvider {
  3151. }
  3152. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java
  3153. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java
  3154. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java
  3155. @@ -7,11 +7,6 @@ package org.chromium.components.media_router.caf;
  3156. import androidx.annotation.NonNull;
  3157. import androidx.annotation.VisibleForTesting;
  3158. -import com.google.android.gms.cast.ApplicationMetadata;
  3159. -import com.google.android.gms.cast.Cast;
  3160. -import com.google.android.gms.cast.CastDevice;
  3161. -import com.google.android.gms.cast.framework.CastSession;
  3162. -
  3163. import org.chromium.base.Log;
  3164. import java.util.ArrayList;
  3165. @@ -24,12 +19,10 @@ public class CastSessionController extends BaseSessionController {
  3166. private static final String TAG = "CafSessionCtrl";
  3167. private List<String> mNamespaces = new ArrayList<String>();
  3168. - private CastListener mCastListener;
  3169. private CafNotificationController mNotificationController;
  3170. public CastSessionController(CafBaseMediaRouteProvider provider) {
  3171. super(provider);
  3172. - mCastListener = new CastListener();
  3173. mNotificationController = new CafNotificationController(this);
  3174. }
  3175. @@ -37,30 +30,6 @@ public class CastSessionController extends BaseSessionController {
  3176. return mNamespaces;
  3177. }
  3178. - /**
  3179. - * Init nested fields for testing. The reason is that nested classes are bound to the original
  3180. - * instance instead of the spyed instance.
  3181. - */
  3182. - void initNestedFieldsForTesting() {
  3183. - mCastListener = new CastListener();
  3184. - }
  3185. -
  3186. - @Override
  3187. - public void attachToCastSession(CastSession session) {
  3188. - super.attachToCastSession(session);
  3189. - getSession().addCastListener(mCastListener);
  3190. - updateNamespaces();
  3191. - }
  3192. -
  3193. - @Override
  3194. - public void detachFromCastSession() {
  3195. - if (getSession() == null) return;
  3196. -
  3197. - mNamespaces.clear();
  3198. - getSession().removeCastListener(mCastListener);
  3199. - super.detachFromCastSession();
  3200. - }
  3201. -
  3202. @Override
  3203. public void onSessionEnded() {
  3204. getMessageHandler().onSessionEnded();
  3205. @@ -72,24 +41,6 @@ public class CastSessionController extends BaseSessionController {
  3206. return mNotificationController;
  3207. }
  3208. - private class CastListener extends Cast.Listener {
  3209. - @Override
  3210. - public void onApplicationStatusChanged() {
  3211. - CastSessionController.this.onApplicationStatusChanged();
  3212. - }
  3213. -
  3214. - @Override
  3215. - public void onApplicationMetadataChanged(ApplicationMetadata metadata) {
  3216. - CastSessionController.this.onApplicationStatusChanged();
  3217. - }
  3218. -
  3219. - @Override
  3220. - public void onVolumeChanged() {
  3221. - CastSessionController.this.onApplicationStatusChanged();
  3222. - getMessageHandler().onVolumeChanged();
  3223. - }
  3224. - }
  3225. -
  3226. private void onApplicationStatusChanged() {
  3227. updateNamespaces();
  3228. @@ -100,53 +51,18 @@ public class CastSessionController extends BaseSessionController {
  3229. @VisibleForTesting
  3230. void updateNamespaces() {
  3231. if (!isConnected()) return;
  3232. -
  3233. - if (getSession().getApplicationMetadata() == null
  3234. - || getSession().getApplicationMetadata().getSupportedNamespaces() == null) {
  3235. - return;
  3236. - }
  3237. -
  3238. - Set<String> namespacesToAdd =
  3239. - new HashSet<>(getSession().getApplicationMetadata().getSupportedNamespaces());
  3240. - Set<String> namespacesToRemove = new HashSet<String>(mNamespaces);
  3241. -
  3242. - namespacesToRemove.removeAll(namespacesToAdd);
  3243. - namespacesToAdd.removeAll(mNamespaces);
  3244. -
  3245. - for (String namespace : namespacesToRemove) unregisterNamespace(namespace);
  3246. - for (String namespace : namespacesToAdd) registerNamespace(namespace);
  3247. }
  3248. private void registerNamespace(String namespace) {
  3249. assert !mNamespaces.contains(namespace);
  3250. if (!isConnected()) return;
  3251. -
  3252. - try {
  3253. - getSession().setMessageReceivedCallbacks(namespace, this::onMessageReceived);
  3254. - mNamespaces.add(namespace);
  3255. - } catch (Exception e) {
  3256. - Log.e(TAG, "Failed to register namespace listener for %s", namespace, e);
  3257. - }
  3258. }
  3259. private void unregisterNamespace(String namespace) {
  3260. assert mNamespaces.contains(namespace);
  3261. if (!isConnected()) return;
  3262. -
  3263. - try {
  3264. - getSession().removeMessageReceivedCallbacks(namespace);
  3265. - mNamespaces.remove(namespace);
  3266. - } catch (Exception e) {
  3267. - Log.e(TAG, "Failed to remove the namespace listener for %s", namespace, e);
  3268. - }
  3269. - }
  3270. -
  3271. - @Override
  3272. - protected void onMessageReceived(CastDevice castDevice, String namespace, String message) {
  3273. - super.onMessageReceived(castDevice, namespace, message);
  3274. - getMessageHandler().onMessageReceived(namespace, message);
  3275. }
  3276. @NonNull
  3277. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java
  3278. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java
  3279. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java
  3280. @@ -4,18 +4,10 @@
  3281. package org.chromium.components.media_router.caf;
  3282. -import com.google.android.gms.cast.framework.CastContext;
  3283. -
  3284. import org.chromium.components.media_router.MediaRouterClient;
  3285. /** Utility methods for Cast. */
  3286. public class CastUtils {
  3287. - /** Helper method to return the {@link CastContext} instance. */
  3288. - public static CastContext getCastContext() {
  3289. - return CastContext.getSharedInstance(
  3290. - MediaRouterClient.getInstance().getContextForRemoting());
  3291. - }
  3292. -
  3293. /**
  3294. * Compares two origins. Empty origin strings correspond to unique origins in
  3295. * url::Origin.
  3296. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java
  3297. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java
  3298. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java
  3299. @@ -45,53 +45,36 @@ public class CafExpandedControllerActivity
  3300. @Override
  3301. public void play() {
  3302. if (!mSessionController.isConnected()) return;
  3303. -
  3304. - mSessionController.getSession().getRemoteMediaClient().play();
  3305. }
  3306. @Override
  3307. public void pause() {
  3308. if (!mSessionController.isConnected()) return;
  3309. -
  3310. - mSessionController.getSession().getRemoteMediaClient().pause();
  3311. }
  3312. @Override
  3313. public long getDuration() {
  3314. - if (!mSessionController.isConnected()) return 0;
  3315. - return mSessionController.getFlingingController().getDuration();
  3316. + return 0;
  3317. }
  3318. @Override
  3319. public long getPosition() {
  3320. - if (!mSessionController.isConnected()) return 0;
  3321. - return mSessionController.getFlingingController().getApproximateCurrentTime();
  3322. + return 0;
  3323. }
  3324. @Override
  3325. public void seekTo(long pos) {
  3326. - if (!mSessionController.isConnected()) return;
  3327. -
  3328. - mSessionController.getSession().getRemoteMediaClient().seek(pos);
  3329. }
  3330. @Override
  3331. public boolean isPlaying() {
  3332. - if (!mSessionController.isConnected()) return false;
  3333. -
  3334. - return mSessionController.getSession().getRemoteMediaClient().isPlaying();
  3335. + return false;
  3336. }
  3337. @Override
  3338. public long getActionFlags() {
  3339. long flags =
  3340. PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD;
  3341. - if (mSessionController.isConnected()
  3342. - && mSessionController.getSession().getRemoteMediaClient().isPlaying()) {
  3343. - flags |= PlaybackStateCompat.ACTION_PAUSE;
  3344. - } else {
  3345. - flags |= PlaybackStateCompat.ACTION_PLAY;
  3346. - }
  3347. return flags;
  3348. }
  3349. };
  3350. @@ -180,20 +163,10 @@ public class CafExpandedControllerActivity
  3351. private void updateUi() {
  3352. if (!mSessionController.isConnected()) return;
  3353. - String deviceName = mSessionController.getSession().getCastDevice().getFriendlyName();
  3354. - String titleText = "";
  3355. - if (deviceName != null) {
  3356. - titleText = getResources().getString(R.string.cast_casting_video, deviceName);
  3357. - }
  3358. - mTitleView.setText(titleText);
  3359. -
  3360. mMediaController.refresh();
  3361. mMediaController.updateProgress();
  3362. cancelProgressUpdateTask();
  3363. - if (mSessionController.getSession().getRemoteMediaClient().isPlaying()) {
  3364. - scheduleProgressUpdateTask();
  3365. - }
  3366. }
  3367. private void scheduleProgressUpdateTask() {
  3368. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java
  3369. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java
  3370. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java
  3371. @@ -65,6 +65,6 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider {
  3372. if (!mRoutes.containsKey(routeId)) return null;
  3373. - return sessionController().getFlingingController();
  3374. + return null;
  3375. }
  3376. }
  3377. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java
  3378. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java
  3379. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java
  3380. @@ -4,11 +4,6 @@
  3381. package org.chromium.components.media_router.caf.remoting;
  3382. -import com.google.android.gms.cast.MediaInfo;
  3383. -import com.google.android.gms.cast.MediaStatus;
  3384. -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
  3385. -import com.google.android.gms.common.api.Result;
  3386. -
  3387. import org.chromium.base.Log;
  3388. import org.chromium.components.media_router.FlingingController;
  3389. import org.chromium.components.media_router.MediaController;
  3390. @@ -69,14 +64,6 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
  3391. /** Starts loading the media URL, from the given position. */
  3392. public void load(long position) {
  3393. if (!mSessionController.isConnected()) return;
  3394. -
  3395. - mLoaded = true;
  3396. -
  3397. - MediaInfo mediaInfo = new MediaInfo.Builder(mMediaUrl)
  3398. - .setContentType("*/*")
  3399. - .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
  3400. - .build();
  3401. - mSessionController.getRemoteMediaClient().load(mediaInfo, /* autoplay= */ true, position);
  3402. }
  3403. ////////////////////////////////////////////
  3404. @@ -91,89 +78,28 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
  3405. load(/* position= */ 0);
  3406. return;
  3407. }
  3408. -
  3409. - mSessionController.getRemoteMediaClient().play().setResultCallback(
  3410. - this::onMediaCommandResult);
  3411. }
  3412. @Override
  3413. public void pause() {
  3414. if (!mSessionController.isConnected()) return;
  3415. - mSessionController.getRemoteMediaClient().pause().setResultCallback(
  3416. - this::onMediaCommandResult);
  3417. }
  3418. @Override
  3419. public void setMute(boolean mute) {
  3420. if (!mSessionController.isConnected()) return;
  3421. - mSessionController.getRemoteMediaClient().setStreamMute(mute).setResultCallback(
  3422. - this::onMediaCommandResult);
  3423. }
  3424. @Override
  3425. public void setVolume(double volume) {
  3426. if (!mSessionController.isConnected()) return;
  3427. - mSessionController.getRemoteMediaClient().setStreamVolume(volume).setResultCallback(
  3428. - this::onMediaCommandResult);
  3429. }
  3430. @Override
  3431. public void seek(long position) {
  3432. - if (!mSessionController.isConnected()) return;
  3433. -
  3434. - if (!mLoaded) {
  3435. - load(position);
  3436. - return;
  3437. - }
  3438. -
  3439. - mSessionController.getRemoteMediaClient().seek(position).setResultCallback(
  3440. - this::onMediaCommandResult);
  3441. - mStreamPositionExtrapolator.onSeek(position);
  3442. }
  3443. ////////////////////////////////////////////
  3444. // MediaController implementation end
  3445. ////////////////////////////////////////////
  3446. -
  3447. - public void onStatusUpdated() {
  3448. - if (mMediaStatusObserver == null) return;
  3449. -
  3450. - RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient();
  3451. -
  3452. - MediaStatus mediaStatus = remoteMediaClient.getMediaStatus();
  3453. - if (mediaStatus != null) {
  3454. - mHasEverReceivedValidMediaSession = true;
  3455. - if (mediaStatus.getPlayerState() == MediaStatus.PLAYER_STATE_IDLE
  3456. - && mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_FINISHED) {
  3457. - mLoaded = false;
  3458. - mStreamPositionExtrapolator.onFinish();
  3459. - } else {
  3460. - mStreamPositionExtrapolator.update(remoteMediaClient.getStreamDuration(),
  3461. - remoteMediaClient.getApproximateStreamPosition(),
  3462. - remoteMediaClient.isPlaying(), mediaStatus.getPlaybackRate());
  3463. - }
  3464. -
  3465. - mMediaStatusObserver.onMediaStatusUpdate(new MediaStatusBridge(mediaStatus));
  3466. -
  3467. - } else if (mHasEverReceivedValidMediaSession) {
  3468. - // We can receive a null |mediaStatus| while we are in the process of loading the video.
  3469. - // We should wait until we receive one valid media status before considering the video
  3470. - // unloaded. Otherwise, the first call to seek or play will reload the video.
  3471. - // See b/144325733.
  3472. - mLoaded = false;
  3473. - mStreamPositionExtrapolator.clear();
  3474. - }
  3475. - }
  3476. -
  3477. - private void onMediaCommandResult(Result result) {
  3478. - // When multiple API calls are made in quick succession, "Results have already been set"
  3479. - // IllegalStateExceptions might be thrown from GMS code. We prefer to catch the exception
  3480. - // and noop it, than to crash. This might lead to some API calls never getting their
  3481. - // onResult() called, so we should not rely on onResult() being called for every API call.
  3482. - // See https://crbug.com/853923.
  3483. - if (!result.getStatus().isSuccess()) {
  3484. - Log.e(TAG, "Error when sending command. Status code: %d",
  3485. - result.getStatus().getStatusCode());
  3486. - }
  3487. - }
  3488. }
  3489. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java
  3490. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java
  3491. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java
  3492. @@ -13,8 +13,6 @@ import android.util.Base64;
  3493. import androidx.annotation.Nullable;
  3494. import androidx.mediarouter.media.MediaRouteSelector;
  3495. -import com.google.android.gms.cast.CastMediaControlIntent;
  3496. -
  3497. import org.chromium.base.ContextUtils;
  3498. import org.chromium.base.Log;
  3499. import org.chromium.components.media_router.MediaSource;
  3500. @@ -84,9 +82,7 @@ public class RemotingMediaSource implements MediaSource {
  3501. */
  3502. @Override
  3503. public MediaRouteSelector buildRouteSelector() {
  3504. - return new MediaRouteSelector.Builder()
  3505. - .addControlCategory(CastMediaControlIntent.categoryForCast(getApplicationId()))
  3506. - .build();
  3507. + return null;
  3508. }
  3509. /**
  3510. @@ -113,7 +109,7 @@ public class RemotingMediaSource implements MediaSource {
  3511. sApplicationId = (customAppId != null && !customAppId.isEmpty())
  3512. ? customAppId
  3513. - : CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID;
  3514. + : "CC1AD845"; /*DEFAULT_MEDIA_RECEIVER_APPLICATION_ID*/
  3515. }
  3516. return sApplicationId;
  3517. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java
  3518. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java
  3519. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java
  3520. @@ -4,8 +4,6 @@
  3521. package org.chromium.components.media_router.caf.remoting;
  3522. -import com.google.android.gms.cast.framework.CastSession;
  3523. -
  3524. import org.chromium.base.Log;
  3525. import org.chromium.components.media_router.CastSessionUtil;
  3526. import org.chromium.components.media_router.caf.BaseNotificationController;
  3527. @@ -33,19 +31,6 @@ public class RemotingSessionController extends BaseSessionController {
  3528. sInstance = new WeakReference<>(this);
  3529. }
  3530. - @Override
  3531. - public void attachToCastSession(CastSession session) {
  3532. - super.attachToCastSession(session);
  3533. -
  3534. - try {
  3535. - getSession().setMessageReceivedCallbacks(
  3536. - CastSessionUtil.MEDIA_NAMESPACE, this::onMessageReceived);
  3537. - } catch (Exception e) {
  3538. - Log.e(TAG, "Failed to register namespace listener for %s",
  3539. - CastSessionUtil.MEDIA_NAMESPACE, e);
  3540. - }
  3541. - }
  3542. -
  3543. @Override
  3544. public void onSessionStarted() {
  3545. super.onSessionStarted();
  3546. @@ -53,17 +38,6 @@ public class RemotingSessionController extends BaseSessionController {
  3547. mFlingingControllerAdapter = new FlingingControllerAdapter(this, source.getMediaUrl());
  3548. }
  3549. - @Override
  3550. - protected void onStatusUpdated() {
  3551. - mFlingingControllerAdapter.onStatusUpdated();
  3552. - super.onStatusUpdated();
  3553. - }
  3554. -
  3555. - @Override
  3556. - public FlingingControllerAdapter getFlingingController() {
  3557. - return mFlingingControllerAdapter;
  3558. - }
  3559. -
  3560. @Override
  3561. public BaseNotificationController getNotificationController() {
  3562. return mNotificationController;
  3563. diff --git a/components/media_router/test/android/cast_emulator/BUILD.gn b/components/media_router/test/android/cast_emulator/BUILD.gn
  3564. --- a/components/media_router/test/android/cast_emulator/BUILD.gn
  3565. +++ b/components/media_router/test/android/cast_emulator/BUILD.gn
  3566. @@ -20,7 +20,6 @@ android_library("cast_emulator_java") {
  3567. "src/org/chromium/components/media_router/cast_emulator/router/DummyRoutePublisher.java",
  3568. ]
  3569. deps = [
  3570. - "$google_play_services_package:google_play_services_cast_java",
  3571. "//base:base_java",
  3572. "//third_party/android_deps:android_support_v7_appcompat_java",
  3573. "//third_party/android_deps:androidx_mediarouter_mediarouter_java",
  3574. diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
  3575. --- a/components/module_installer/android/BUILD.gn
  3576. +++ b/components/module_installer/android/BUILD.gn
  3577. @@ -37,7 +37,6 @@ android_library("module_installer_java") {
  3578. "//base:jni_java",
  3579. "//components/crash/android:java",
  3580. "//third_party/android_deps:androidx_annotation_annotation_java",
  3581. - "//third_party/google_android_play_core:com_google_android_play_core_java",
  3582. ]
  3583. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  3584. @@ -60,7 +59,6 @@ junit_binary("module_installer_junit_tests") {
  3585. "//base:base_java",
  3586. "//base:base_java_test_support",
  3587. "//base:base_junit_test_support",
  3588. - "//third_party/google_android_play_core:com_google_android_play_core_java",
  3589. "//third_party/hamcrest:hamcrest_java",
  3590. ]
  3591. }
  3592. diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
  3593. --- a/components/signin/core/browser/android/BUILD.gn
  3594. +++ b/components/signin/core/browser/android/BUILD.gn
  3595. @@ -14,9 +14,6 @@ generate_jni("jni_headers") {
  3596. android_library("java") {
  3597. deps = [
  3598. - "$google_play_services_package:google_play_services_auth_base_java",
  3599. - "$google_play_services_package:google_play_services_base_java",
  3600. - "$google_play_services_package:google_play_services_basement_java",
  3601. "//base:base_java",
  3602. "//base:jni_java",
  3603. "//net/android:net_java",
  3604. diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
  3605. --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
  3606. +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
  3607. @@ -4,8 +4,6 @@
  3608. package org.chromium.components.signin;
  3609. -import com.google.android.gms.common.GoogleApiAvailability;
  3610. -
  3611. /**
  3612. * This class encapsulates return code if GMSCore package is not available.
  3613. */
  3614. @@ -27,6 +25,6 @@ public class GmsAvailabilityException extends AccountManagerDelegateException {
  3615. }
  3616. public boolean isUserResolvableError() {
  3617. - return GoogleApiAvailability.getInstance().isUserResolvableError(mResultCode);
  3618. + return false;
  3619. }
  3620. }
  3621. diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
  3622. --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
  3623. +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
  3624. @@ -26,9 +26,6 @@ import android.os.SystemClock;
  3625. import androidx.annotation.Nullable;
  3626. -import com.google.android.gms.common.ConnectionResult;
  3627. -import com.google.android.gms.common.GoogleApiAvailability;
  3628. -
  3629. import org.chromium.base.ApiCompatibilityUtils;
  3630. import org.chromium.base.Callback;
  3631. import org.chromium.base.ContextUtils;
  3632. @@ -86,17 +83,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
  3633. }
  3634. protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException {
  3635. - Context context = ContextUtils.getApplicationContext();
  3636. - final int resultCode =
  3637. - ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context);
  3638. - if (resultCode == ConnectionResult.SUCCESS) {
  3639. - return;
  3640. - }
  3641. -
  3642. - throw new GmsAvailabilityException(
  3643. - String.format("Can't use Google Play Services: %s",
  3644. - GoogleApiAvailability.getInstance().getErrorString(resultCode)),
  3645. - resultCode);
  3646. + throw new GmsAvailabilityException("Can't use Google Play Services", 1);
  3647. }
  3648. @Override
  3649. @@ -182,11 +169,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
  3650. @Override
  3651. public boolean isGooglePlayServicesAvailable() {
  3652. - // TODO(http://crbug.com/577190): Remove StrictMode override.
  3653. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
  3654. - return ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(
  3655. - ContextUtils.getApplicationContext());
  3656. - }
  3657. + return false;
  3658. }
  3659. protected boolean hasGetAccountsPermission() {
  3660. diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
  3661. --- a/components/sync/android/BUILD.gn
  3662. +++ b/components/sync/android/BUILD.gn
  3663. @@ -13,7 +13,6 @@ android_library("sync_java") {
  3664. "//net/android:net_java",
  3665. "//third_party/android_deps:androidx_annotation_annotation_java",
  3666. "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
  3667. - "//third_party/android_sdk:android_gcm_java",
  3668. ]
  3669. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  3670. srcjar_deps = [ ":java_enums" ]
  3671. diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
  3672. --- a/content/public/android/BUILD.gn
  3673. +++ b/content/public/android/BUILD.gn
  3674. @@ -139,10 +139,6 @@ android_library("content_main_dex_java") {
  3675. android_library("content_full_java") {
  3676. deps = [
  3677. ":content_main_dex_java",
  3678. - "$google_play_services_package:google_play_services_auth_api_phone_java",
  3679. - "$google_play_services_package:google_play_services_base_java",
  3680. - "$google_play_services_package:google_play_services_basement_java",
  3681. - "$google_play_services_package:google_play_services_tasks_java",
  3682. "//base:base_java",
  3683. "//base:jni_java",
  3684. "//build:chromeos_buildflags",
  3685. diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
  3686. --- a/content/public/common/content_features.cc
  3687. +++ b/content/public/common/content_features.cc
  3688. @@ -786,7 +786,7 @@ const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
  3689. // Controls whether the WebAuthentication API is enabled:
  3690. // https://w3c.github.io/webauthn
  3691. const base::Feature kWebAuth{"WebAuthentication",
  3692. - base::FEATURE_ENABLED_BY_DEFAULT};
  3693. + base::FEATURE_DISABLED_BY_DEFAULT};
  3694. // Controls whether CTAP2 devices can communicate via the WebAuthentication API
  3695. // using pairingless BLE protocol.
  3696. diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
  3697. --- a/content/test/BUILD.gn
  3698. +++ b/content/test/BUILD.gn
  3699. @@ -2630,10 +2630,6 @@ if (is_android) {
  3700. testonly = true
  3701. sources = content_java_sources_needing_jni
  3702. deps = [
  3703. - "$google_play_services_package:google_play_services_auth_api_phone_java",
  3704. - "$google_play_services_package:google_play_services_base_java",
  3705. - "$google_play_services_package:google_play_services_basement_java",
  3706. - "$google_play_services_package:google_play_services_tasks_java",
  3707. "//base:base_java",
  3708. "//content/public/android:content_java",
  3709. "//ui/android:ui_full_java",
  3710. diff --git a/device/BUILD.gn b/device/BUILD.gn
  3711. --- a/device/BUILD.gn
  3712. +++ b/device/BUILD.gn
  3713. @@ -422,9 +422,6 @@ if (is_android) {
  3714. junit_binary("device_junit_tests") {
  3715. sources = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
  3716. deps = [
  3717. - "$google_play_services_package:google_play_services_base_java",
  3718. - "$google_play_services_package:google_play_services_basement_java",
  3719. - "$google_play_services_package:google_play_services_location_java",
  3720. "//base:base_java",
  3721. "//base:base_java_test_support",
  3722. "//base:base_junit_test_support",
  3723. diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni
  3724. --- a/remoting/android/client_java_tmpl.gni
  3725. +++ b/remoting/android/client_java_tmpl.gni
  3726. @@ -104,9 +104,6 @@ template("remoting_android_client_java_tmpl") {
  3727. if (defined(invoker.play_services_package)) {
  3728. deps += [
  3729. - "${invoker.play_services_package}:google_play_services_auth_base_java",
  3730. - "${invoker.play_services_package}:google_play_services_base_java",
  3731. - "${invoker.play_services_package}:google_play_services_basement_java",
  3732. ]
  3733. }
  3734. diff --git a/services/BUILD.gn b/services/BUILD.gn
  3735. --- a/services/BUILD.gn
  3736. +++ b/services/BUILD.gn
  3737. @@ -104,11 +104,6 @@ if (is_android) {
  3738. "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
  3739. ]
  3740. deps = [
  3741. - "$google_play_services_package:google_play_services_base_java",
  3742. - "$google_play_services_package:google_play_services_basement_java",
  3743. - "$google_play_services_package:google_play_services_location_java",
  3744. - "$google_play_services_package:google_play_services_vision_common_java",
  3745. - "$google_play_services_package:google_play_services_vision_java",
  3746. "//base:base_java",
  3747. "//base:base_java_test_support",
  3748. "//base:base_junit_test_support",
  3749. @@ -137,10 +132,6 @@ if (is_android) {
  3750. "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java",
  3751. ]
  3752. deps = [
  3753. - "$google_play_services_package:google_play_services_base_java",
  3754. - "$google_play_services_package:google_play_services_basement_java",
  3755. - "$google_play_services_package:google_play_services_vision_common_java",
  3756. - "$google_play_services_package:google_play_services_vision_java",
  3757. "//base:base_java",
  3758. "//base:base_java_test_support",
  3759. "//mojo/public/java:base_java",
  3760. diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
  3761. --- a/services/device/geolocation/BUILD.gn
  3762. +++ b/services/device/geolocation/BUILD.gn
  3763. @@ -156,9 +156,6 @@ if (is_android) {
  3764. deps = [
  3765. ":geolocation_jni_headers",
  3766. - "$google_play_services_package:google_play_services_base_java",
  3767. - "$google_play_services_package:google_play_services_basement_java",
  3768. - "$google_play_services_package:google_play_services_location_java",
  3769. "//base:base_java",
  3770. "//base:jni_java",
  3771. "//components/location/android:location_java",
  3772. diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
  3773. --- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
  3774. +++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
  3775. @@ -8,132 +8,40 @@ import android.content.Context;
  3776. import android.location.Location;
  3777. import android.os.Bundle;
  3778. -import com.google.android.gms.common.ConnectionResult;
  3779. -import com.google.android.gms.common.api.GoogleApiClient;
  3780. -import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
  3781. -import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
  3782. -import com.google.android.gms.location.FusedLocationProviderApi;
  3783. -import com.google.android.gms.location.LocationListener;
  3784. -import com.google.android.gms.location.LocationRequest;
  3785. -import com.google.android.gms.location.LocationServices;
  3786. -
  3787. import org.chromium.base.Log;
  3788. import org.chromium.base.ThreadUtils;
  3789. import org.chromium.components.location.LocationUtils;
  3790. -import org.chromium.gms.ChromiumPlayServicesAvailability;
  3791. /**
  3792. * This is a LocationProvider using Google Play Services.
  3793. *
  3794. * https://developers.google.com/android/reference/com/google/android/gms/location/package-summary
  3795. */
  3796. -public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectionFailedListener,
  3797. - LocationListener, LocationProvider {
  3798. +public class LocationProviderGmsCore implements LocationProvider {
  3799. private static final String TAG = "LocationProvider";
  3800. // Values for the LocationRequest's setInterval for normal and high accuracy, respectively.
  3801. private static final long UPDATE_INTERVAL_MS = 1000;
  3802. private static final long UPDATE_INTERVAL_FAST_MS = 500;
  3803. - private final GoogleApiClient mGoogleApiClient;
  3804. - private FusedLocationProviderApi mLocationProviderApi = LocationServices.FusedLocationApi;
  3805. -
  3806. - private boolean mEnablehighAccuracy;
  3807. - private LocationRequest mLocationRequest;
  3808. -
  3809. public static boolean isGooglePlayServicesAvailable(Context context) {
  3810. - return ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(context);
  3811. + return false;
  3812. }
  3813. LocationProviderGmsCore(Context context) {
  3814. Log.i(TAG, "Google Play Services");
  3815. - mGoogleApiClient = new GoogleApiClient.Builder(context)
  3816. - .addApi(LocationServices.API)
  3817. - .addConnectionCallbacks(this)
  3818. - .addOnConnectionFailedListener(this)
  3819. - .build();
  3820. - assert mGoogleApiClient != null;
  3821. - }
  3822. -
  3823. - LocationProviderGmsCore(GoogleApiClient client, FusedLocationProviderApi locationApi) {
  3824. - mGoogleApiClient = client;
  3825. - mLocationProviderApi = locationApi;
  3826. - }
  3827. -
  3828. - // ConnectionCallbacks implementation
  3829. - @Override
  3830. - public void onConnected(Bundle connectionHint) {
  3831. - ThreadUtils.assertOnUiThread();
  3832. -
  3833. - mLocationRequest = LocationRequest.create();
  3834. - if (mEnablehighAccuracy) {
  3835. - // With enableHighAccuracy, request a faster update interval and configure the provider
  3836. - // for high accuracy mode.
  3837. - mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
  3838. - .setInterval(UPDATE_INTERVAL_FAST_MS);
  3839. - } else {
  3840. - // Use balanced mode by default. In this mode, the API will prefer the network provider
  3841. - // but may use sensor data (for instance, GPS) if high accuracy is requested by another
  3842. - // app.
  3843. - //
  3844. - // If location is configured for sensors-only then elevate the priority to ensure GPS
  3845. - // and other sensors are used.
  3846. - if (LocationUtils.getInstance().isSystemLocationSettingSensorsOnly()) {
  3847. - mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
  3848. - } else {
  3849. - mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
  3850. - }
  3851. - mLocationRequest.setInterval(UPDATE_INTERVAL_MS);
  3852. - }
  3853. -
  3854. - final Location location = mLocationProviderApi.getLastLocation(mGoogleApiClient);
  3855. - if (location != null) {
  3856. - LocationProviderAdapter.onNewLocationAvailable(location);
  3857. - }
  3858. -
  3859. - try {
  3860. - // Request updates on UI Thread replicating LocationProviderAndroid's behaviour.
  3861. - mLocationProviderApi.requestLocationUpdates(
  3862. - mGoogleApiClient, mLocationRequest, this, ThreadUtils.getUiThreadLooper());
  3863. - } catch (IllegalStateException | SecurityException e) {
  3864. - // IllegalStateException is thrown "If this method is executed in a thread that has not
  3865. - // called Looper.prepare()". SecurityException is thrown if there is no permission, see
  3866. - // https://crbug.com/731271.
  3867. - Log.e(TAG, " mLocationProviderApi.requestLocationUpdates() " + e);
  3868. - LocationProviderAdapter.newErrorAvailable(
  3869. - "Failed to request location updates: " + e.toString());
  3870. - assert false;
  3871. - }
  3872. - }
  3873. -
  3874. - @Override
  3875. - public void onConnectionSuspended(int cause) {}
  3876. -
  3877. - // OnConnectionFailedListener implementation
  3878. - @Override
  3879. - public void onConnectionFailed(ConnectionResult result) {
  3880. - LocationProviderAdapter.newErrorAvailable(
  3881. - "Failed to connect to Google Play Services: " + result.toString());
  3882. }
  3883. // LocationProvider implementation
  3884. @Override
  3885. public void start(boolean enableHighAccuracy) {
  3886. ThreadUtils.assertOnUiThread();
  3887. - if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect();
  3888. -
  3889. mEnablehighAccuracy = enableHighAccuracy;
  3890. - mGoogleApiClient.connect(); // Should return via onConnected().
  3891. }
  3892. @Override
  3893. public void stop() {
  3894. ThreadUtils.assertOnUiThread();
  3895. - if (!mGoogleApiClient.isConnected()) return;
  3896. -
  3897. - mLocationProviderApi.removeLocationUpdates(mGoogleApiClient, this);
  3898. -
  3899. - mGoogleApiClient.disconnect();
  3900. }
  3901. @Override
  3902. @@ -142,10 +50,4 @@ public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectio
  3903. if (mGoogleApiClient == null) return false;
  3904. return mGoogleApiClient.isConnecting() || mGoogleApiClient.isConnected();
  3905. }
  3906. -
  3907. - // LocationListener implementation
  3908. - @Override
  3909. - public void onLocationChanged(Location location) {
  3910. - LocationProviderAdapter.onNewLocationAvailable(location);
  3911. - }
  3912. }
  3913. diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
  3914. --- a/services/shape_detection/BUILD.gn
  3915. +++ b/services/shape_detection/BUILD.gn
  3916. @@ -107,10 +107,6 @@ if (is_android) {
  3917. ]
  3918. deps = [
  3919. - "$google_play_services_package:google_play_services_base_java",
  3920. - "$google_play_services_package:google_play_services_basement_java",
  3921. - "$google_play_services_package:google_play_services_vision_common_java",
  3922. - "$google_play_services_package:google_play_services_vision_java",
  3923. "//base:base_java",
  3924. "//mojo/public/java:base_java",
  3925. "//mojo/public/java:bindings_java",
  3926. diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
  3927. --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
  3928. +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
  3929. @@ -8,10 +8,6 @@ import android.graphics.Point;
  3930. import android.graphics.Rect;
  3931. import android.util.SparseArray;
  3932. -import com.google.android.gms.vision.Frame;
  3933. -import com.google.android.gms.vision.barcode.Barcode;
  3934. -import com.google.android.gms.vision.barcode.BarcodeDetector;
  3935. -
  3936. import org.chromium.base.ContextUtils;
  3937. import org.chromium.base.Log;
  3938. import org.chromium.gfx.mojom.PointF;
  3939. @@ -28,50 +24,7 @@ import org.chromium.shape_detection.mojom.BarcodeFormat;
  3940. public class BarcodeDetectionImpl implements BarcodeDetection {
  3941. private static final String TAG = "BarcodeDetectionImpl";
  3942. - private BarcodeDetector mBarcodeDetector;
  3943. -
  3944. public BarcodeDetectionImpl(BarcodeDetectorOptions options) {
  3945. - int formats = Barcode.ALL_FORMATS;
  3946. - if (options.formats != null && options.formats.length > 0) {
  3947. - formats = 0;
  3948. - // Keep this list in sync with the constants defined in
  3949. - // com.google.android.gms.vision.barcode.Barcode and the list of
  3950. - // supported formats in BarcodeDetectionProviderImpl.
  3951. - for (int i = 0; i < options.formats.length; ++i) {
  3952. - if (options.formats[i] == BarcodeFormat.AZTEC) {
  3953. - formats |= Barcode.AZTEC;
  3954. - } else if (options.formats[i] == BarcodeFormat.CODE_128) {
  3955. - formats |= Barcode.CODE_128;
  3956. - } else if (options.formats[i] == BarcodeFormat.CODE_39) {
  3957. - formats |= Barcode.CODE_39;
  3958. - } else if (options.formats[i] == BarcodeFormat.CODE_93) {
  3959. - formats |= Barcode.CODE_93;
  3960. - } else if (options.formats[i] == BarcodeFormat.CODABAR) {
  3961. - formats |= Barcode.CODABAR;
  3962. - } else if (options.formats[i] == BarcodeFormat.DATA_MATRIX) {
  3963. - formats |= Barcode.DATA_MATRIX;
  3964. - } else if (options.formats[i] == BarcodeFormat.EAN_13) {
  3965. - formats |= Barcode.EAN_13;
  3966. - } else if (options.formats[i] == BarcodeFormat.EAN_8) {
  3967. - formats |= Barcode.EAN_8;
  3968. - } else if (options.formats[i] == BarcodeFormat.ITF) {
  3969. - formats |= Barcode.ITF;
  3970. - } else if (options.formats[i] == BarcodeFormat.PDF417) {
  3971. - formats |= Barcode.PDF417;
  3972. - } else if (options.formats[i] == BarcodeFormat.QR_CODE) {
  3973. - formats |= Barcode.QR_CODE;
  3974. - } else if (options.formats[i] == BarcodeFormat.UPC_A) {
  3975. - formats |= Barcode.UPC_A;
  3976. - } else if (options.formats[i] == BarcodeFormat.UPC_E) {
  3977. - formats |= Barcode.UPC_E;
  3978. - } else {
  3979. - Log.e(TAG, "Unsupported barcode format hint: " + options.formats[i]);
  3980. - }
  3981. - }
  3982. - }
  3983. - mBarcodeDetector = new BarcodeDetector.Builder(ContextUtils.getApplicationContext())
  3984. - .setBarcodeFormats(formats)
  3985. - .build();
  3986. }
  3987. @Override
  3988. @@ -80,47 +33,12 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
  3989. // on the device; this happens "fast", but it might have not completed,
  3990. // bail in this case. Also, the API was disabled between and v.9.0 and
  3991. // v.9.2, see https://developers.google.com/android/guides/releases.
  3992. - if (!mBarcodeDetector.isOperational()) {
  3993. - Log.e(TAG, "BarcodeDetector is not operational");
  3994. - callback.call(new BarcodeDetectionResult[0]);
  3995. - return;
  3996. - }
  3997. -
  3998. - Frame frame = BitmapUtils.convertToFrame(bitmapData);
  3999. - if (frame == null) {
  4000. - Log.e(TAG, "Error converting Mojom Bitmap to Frame");
  4001. - callback.call(new BarcodeDetectionResult[0]);
  4002. - return;
  4003. - }
  4004. -
  4005. - final SparseArray<Barcode> barcodes = mBarcodeDetector.detect(frame);
  4006. -
  4007. - BarcodeDetectionResult[] barcodeArray = new BarcodeDetectionResult[barcodes.size()];
  4008. - for (int i = 0; i < barcodes.size(); i++) {
  4009. - barcodeArray[i] = new BarcodeDetectionResult();
  4010. - final Barcode barcode = barcodes.valueAt(i);
  4011. - barcodeArray[i].rawValue = barcode.rawValue;
  4012. - final Rect rect = barcode.getBoundingBox();
  4013. - barcodeArray[i].boundingBox = new RectF();
  4014. - barcodeArray[i].boundingBox.x = rect.left;
  4015. - barcodeArray[i].boundingBox.y = rect.top;
  4016. - barcodeArray[i].boundingBox.width = rect.width();
  4017. - barcodeArray[i].boundingBox.height = rect.height();
  4018. - final Point[] corners = barcode.cornerPoints;
  4019. - barcodeArray[i].cornerPoints = new PointF[corners.length];
  4020. - for (int j = 0; j < corners.length; j++) {
  4021. - barcodeArray[i].cornerPoints[j] = new PointF();
  4022. - barcodeArray[i].cornerPoints[j].x = corners[j].x;
  4023. - barcodeArray[i].cornerPoints[j].y = corners[j].y;
  4024. - }
  4025. - barcodeArray[i].format = toBarcodeFormat(barcode.format);
  4026. - }
  4027. - callback.call(barcodeArray);
  4028. + Log.e(TAG, "BarcodeDetector is not operational");
  4029. + callback.call(new BarcodeDetectionResult[0]);
  4030. }
  4031. @Override
  4032. public void close() {
  4033. - mBarcodeDetector.release();
  4034. }
  4035. @Override
  4036. @@ -129,34 +47,6 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
  4037. }
  4038. private int toBarcodeFormat(int format) {
  4039. - switch (format) {
  4040. - case Barcode.CODE_128:
  4041. - return BarcodeFormat.CODE_128;
  4042. - case Barcode.CODE_39:
  4043. - return BarcodeFormat.CODE_39;
  4044. - case Barcode.CODE_93:
  4045. - return BarcodeFormat.CODE_93;
  4046. - case Barcode.CODABAR:
  4047. - return BarcodeFormat.CODABAR;
  4048. - case Barcode.DATA_MATRIX:
  4049. - return BarcodeFormat.DATA_MATRIX;
  4050. - case Barcode.EAN_13:
  4051. - return BarcodeFormat.EAN_13;
  4052. - case Barcode.EAN_8:
  4053. - return BarcodeFormat.EAN_8;
  4054. - case Barcode.ITF:
  4055. - return BarcodeFormat.ITF;
  4056. - case Barcode.QR_CODE:
  4057. - return BarcodeFormat.QR_CODE;
  4058. - case Barcode.UPC_A:
  4059. - return BarcodeFormat.UPC_A;
  4060. - case Barcode.UPC_E:
  4061. - return BarcodeFormat.UPC_E;
  4062. - case Barcode.PDF417:
  4063. - return BarcodeFormat.PDF417;
  4064. - case Barcode.AZTEC:
  4065. - return BarcodeFormat.AZTEC;
  4066. - }
  4067. return BarcodeFormat.UNKNOWN;
  4068. }
  4069. }
  4070. diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
  4071. --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
  4072. +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
  4073. @@ -8,8 +8,6 @@ import android.content.Context;
  4074. import android.content.pm.PackageInfo;
  4075. import android.content.pm.PackageManager.NameNotFoundException;
  4076. -import com.google.android.gms.common.GoogleApiAvailability;
  4077. -
  4078. import org.chromium.base.ContextUtils;
  4079. import org.chromium.base.Log;
  4080. import org.chromium.gms.ChromiumPlayServicesAvailability;
  4081. @@ -36,15 +34,6 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider {
  4082. @Override
  4083. public void enumerateSupportedFormats(EnumerateSupportedFormatsResponse callback) {
  4084. - // Keep this list in sync with the constants defined in
  4085. - // com.google.android.gms.vision.barcode.Barcode and the format hints
  4086. - // supported by BarcodeDetectionImpl.
  4087. - int[] supportedFormats = {BarcodeFormat.AZTEC, BarcodeFormat.CODE_128,
  4088. - BarcodeFormat.CODE_39, BarcodeFormat.CODE_93, BarcodeFormat.CODABAR,
  4089. - BarcodeFormat.DATA_MATRIX, BarcodeFormat.EAN_13, BarcodeFormat.EAN_8,
  4090. - BarcodeFormat.ITF, BarcodeFormat.PDF417, BarcodeFormat.QR_CODE, BarcodeFormat.UPC_A,
  4091. - BarcodeFormat.UPC_E};
  4092. - callback.call(supportedFormats);
  4093. }
  4094. @Override
  4095. @@ -54,23 +43,7 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider {
  4096. public void onConnectionError(MojoException e) {}
  4097. public static BarcodeDetectionProvider create() {
  4098. - Context ctx = ContextUtils.getApplicationContext();
  4099. - if (!ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(ctx)) {
  4100. - Log.w(TAG, "Google Play Services not available");
  4101. - return null;
  4102. - }
  4103. - try {
  4104. - PackageInfo playServicesPackage = ctx.getPackageManager().getPackageInfo(
  4105. - GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0);
  4106. - if (playServicesPackage.versionCode < 19742000) {
  4107. - // https://crbug.com/1020746
  4108. - Log.w(TAG, "Detection disabled (%s < 19.7.42)", playServicesPackage.versionName);
  4109. - return null;
  4110. - }
  4111. - } catch (NameNotFoundException e) {
  4112. - Log.w(TAG, "Google Play Services not available");
  4113. - return null;
  4114. - }
  4115. - return new BarcodeDetectionProviderImpl();
  4116. + Log.w(TAG, "Google Play Services not available");
  4117. + return null;
  4118. }
  4119. }
  4120. diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
  4121. --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
  4122. +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
  4123. @@ -7,11 +7,6 @@ package org.chromium.shape_detection;
  4124. import android.graphics.PointF;
  4125. import android.util.SparseArray;
  4126. -import com.google.android.gms.vision.Frame;
  4127. -import com.google.android.gms.vision.face.Face;
  4128. -import com.google.android.gms.vision.face.FaceDetector;
  4129. -import com.google.android.gms.vision.face.Landmark;
  4130. -
  4131. import org.chromium.base.ContextUtils;
  4132. import org.chromium.base.Log;
  4133. import org.chromium.gfx.mojom.RectF;
  4134. @@ -36,26 +31,10 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
  4135. private static final int MAX_EULER_Z = 15;
  4136. private final int mMaxFaces;
  4137. private final boolean mFastMode;
  4138. - private final FaceDetector mFaceDetector;
  4139. - FaceDetectionImplGmsCore(FaceDetectorOptions options) {
  4140. - FaceDetector.Builder builder =
  4141. - new FaceDetector.Builder(ContextUtils.getApplicationContext());
  4142. + FaceDetectionImplGmsCore(FaceDetectorOptions options) { FaceDetector.Builder builder = new FaceDetector.Builder(ContextUtils.getApplicationContext());
  4143. mMaxFaces = Math.min(options.maxDetectedFaces, MAX_FACES);
  4144. mFastMode = options.fastMode;
  4145. -
  4146. - try {
  4147. - builder.setMode(mFastMode ? FaceDetector.FAST_MODE : FaceDetector.ACCURATE_MODE);
  4148. - builder.setLandmarkType(FaceDetector.ALL_LANDMARKS);
  4149. - if (mMaxFaces == 1) {
  4150. - builder.setProminentFaceOnly(true);
  4151. - }
  4152. - } catch (IllegalArgumentException e) {
  4153. - Log.e(TAG, "Unexpected exception " + e);
  4154. - assert false;
  4155. - }
  4156. -
  4157. - mFaceDetector = builder.build();
  4158. }
  4159. @Override
  4160. @@ -63,7 +42,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
  4161. // The vision library will be downloaded the first time the API is used
  4162. // on the device; this happens "fast", but it might have not completed,
  4163. // bail in this case.
  4164. - if (!mFaceDetector.isOperational()) {
  4165. +/* if (!mFaceDetector.isOperational()) {
  4166. Log.e(TAG, "FaceDetector is not operational");
  4167. // Fallback to Android's FaceDetectionImpl.
  4168. @@ -131,12 +110,13 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
  4169. faceArray[i].landmarks = mojoLandmarks.toArray(
  4170. new org.chromium.shape_detection.mojom.Landmark[mojoLandmarks.size()]);
  4171. }
  4172. - callback.call(faceArray);
  4173. + callback.call(faceArray); */
  4174. + Log.e(TAG, "FaceDetector is not operational");
  4175. + callback.call(new FaceDetectionResult[0]);
  4176. }
  4177. @Override
  4178. public void close() {
  4179. - mFaceDetector.release();
  4180. }
  4181. @Override
  4182. diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
  4183. --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
  4184. +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
  4185. @@ -8,15 +8,10 @@ import android.graphics.Point;
  4186. import android.graphics.Rect;
  4187. import android.util.SparseArray;
  4188. -import com.google.android.gms.vision.Frame;
  4189. -import com.google.android.gms.vision.text.TextBlock;
  4190. -import com.google.android.gms.vision.text.TextRecognizer;
  4191. -
  4192. import org.chromium.base.ContextUtils;
  4193. import org.chromium.base.Log;
  4194. import org.chromium.gfx.mojom.PointF;
  4195. import org.chromium.gfx.mojom.RectF;
  4196. -import org.chromium.gms.ChromiumPlayServicesAvailability;
  4197. import org.chromium.mojo.system.MojoException;
  4198. import org.chromium.shape_detection.mojom.TextDetection;
  4199. import org.chromium.shape_detection.mojom.TextDetectionResult;
  4200. @@ -27,10 +22,7 @@ import org.chromium.shape_detection.mojom.TextDetectionResult;
  4201. public class TextDetectionImpl implements TextDetection {
  4202. private static final String TAG = "TextDetectionImpl";
  4203. - private TextRecognizer mTextRecognizer;
  4204. -
  4205. public TextDetectionImpl() {
  4206. - mTextRecognizer = new TextRecognizer.Builder(ContextUtils.getApplicationContext()).build();
  4207. }
  4208. @Override
  4209. @@ -39,13 +31,10 @@ public class TextDetectionImpl implements TextDetection {
  4210. // on the device; this happens "fast", but it might have not completed,
  4211. // bail in this case. Also, the API was disabled between and v.9.0 and
  4212. // v.9.2, see https://developers.google.com/android/guides/releases.
  4213. - if (!mTextRecognizer.isOperational()) {
  4214. Log.e(TAG, "TextDetector is not operational");
  4215. callback.call(new TextDetectionResult[0]);
  4216. return;
  4217. - }
  4218. -
  4219. - Frame frame = BitmapUtils.convertToFrame(bitmapData);
  4220. +/* Frame frame = BitmapUtils.convertToFrame(bitmapData);
  4221. if (frame == null) {
  4222. Log.e(TAG, "Error converting Mojom Bitmap to Frame");
  4223. callback.call(new TextDetectionResult[0]);
  4224. @@ -73,12 +62,11 @@ public class TextDetectionImpl implements TextDetection {
  4225. detectedTextArray[i].cornerPoints[j].y = corners[j].y;
  4226. }
  4227. }
  4228. - callback.call(detectedTextArray);
  4229. + callback.call(detectedTextArray); */
  4230. }
  4231. @Override
  4232. public void close() {
  4233. - mTextRecognizer.release();
  4234. }
  4235. @Override
  4236. @@ -87,11 +75,7 @@ public class TextDetectionImpl implements TextDetection {
  4237. }
  4238. public static TextDetection create() {
  4239. - if (!ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(
  4240. - ContextUtils.getApplicationContext())) {
  4241. - Log.e(TAG, "Google Play Services not available");
  4242. - return null;
  4243. - }
  4244. - return new TextDetectionImpl();
  4245. + Log.e(TAG, "Google Play Services not available");
  4246. + return null;
  4247. }
  4248. }
  4249. diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
  4250. --- a/third_party/android_deps/BUILD.gn
  4251. +++ b/third_party/android_deps/BUILD.gn
  4252. @@ -62,7 +62,6 @@ java_group("robolectric_all_java") {
  4253. ":org_robolectric_shadowapi_java",
  4254. ":org_robolectric_shadows_framework_java",
  4255. ":org_robolectric_shadows_multidex_java",
  4256. - ":org_robolectric_shadows_playservices_java",
  4257. ":org_robolectric_utils_java",
  4258. ":org_robolectric_utils_reflector_java",
  4259. "//third_party/robolectric:android-all-10-robolectric-5803371_java",
  4260. @@ -90,7 +89,7 @@ java_annotation_processor("auto_service_processor") {
  4261. android_library("chromium_play_services_availability_java") {
  4262. sources = [ "util/org/chromium/gms/ChromiumPlayServicesAvailability.java" ]
  4263. - deps = [ "$google_play_services_package:google_play_services_base_java" ]
  4264. + deps = [ ]
  4265. }
  4266. android_library("chromium_play_services_availability_shadows_java") {
  4267. @@ -1155,246 +1154,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
  4268. ]
  4269. }
  4270. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4271. -android_aar_prebuilt("google_play_services_auth_java") {
  4272. - aar_path = "libs/com_google_android_gms_play_services_auth/play-services-auth-17.0.0.aar"
  4273. - info_path = "libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info"
  4274. - deps = [
  4275. - ":androidx_fragment_fragment_java",
  4276. - ":androidx_loader_loader_java",
  4277. - ":google_play_services_auth_api_phone_java",
  4278. - ":google_play_services_auth_base_java",
  4279. - ":google_play_services_base_java",
  4280. - ":google_play_services_basement_java",
  4281. - ":google_play_services_tasks_java",
  4282. - ]
  4283. -
  4284. - # Removing drawables from GMS .aars as they are unused bloat.
  4285. - strip_drawables = true
  4286. -}
  4287. -
  4288. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4289. -android_aar_prebuilt("google_play_services_auth_api_phone_java") {
  4290. - aar_path = "libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-17.5.0.aar"
  4291. - info_path = "libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info"
  4292. - deps = [
  4293. - ":google_play_services_base_java",
  4294. - ":google_play_services_basement_java",
  4295. - ":google_play_services_tasks_java",
  4296. - ]
  4297. -
  4298. - # Removing drawables from GMS .aars as they are unused bloat.
  4299. - strip_drawables = true
  4300. -}
  4301. -
  4302. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4303. -android_aar_prebuilt("google_play_services_auth_base_java") {
  4304. - aar_path = "libs/com_google_android_gms_play_services_auth_base/play-services-auth-base-17.0.0.aar"
  4305. - info_path = "libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info"
  4306. - deps = [
  4307. - ":androidx_collection_collection_java",
  4308. - ":google_play_services_base_java",
  4309. - ":google_play_services_basement_java",
  4310. - ":google_play_services_tasks_java",
  4311. - ]
  4312. -
  4313. - # Removing drawables from GMS .aars as they are unused bloat.
  4314. - strip_drawables = true
  4315. -}
  4316. -
  4317. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4318. -android_aar_prebuilt("google_play_services_base_java") {
  4319. - aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.1.0.aar"
  4320. - info_path = "libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info"
  4321. - deps = [
  4322. - ":androidx_collection_collection_java",
  4323. - ":androidx_core_core_java",
  4324. - ":androidx_fragment_fragment_java",
  4325. - ":google_play_services_basement_java",
  4326. - ":google_play_services_tasks_java",
  4327. - ]
  4328. -
  4329. - # Removing drawables from GMS .aars as they are unused bloat.
  4330. - strip_drawables = true
  4331. -}
  4332. -
  4333. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4334. -android_aar_prebuilt("google_play_services_basement_java") {
  4335. - aar_path = "libs/com_google_android_gms_play_services_basement/play-services-basement-17.1.0.aar"
  4336. - info_path = "libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info"
  4337. - deps = [
  4338. - ":androidx_collection_collection_java",
  4339. - ":androidx_core_core_java",
  4340. - ":androidx_fragment_fragment_java",
  4341. - ]
  4342. -
  4343. - # Removing drawables from GMS .aars as they are unused bloat.
  4344. - strip_drawables = true
  4345. -
  4346. - # https://crbug.com/989505
  4347. - jar_excluded_patterns = [ "META-INF/proguard/*" ]
  4348. - input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
  4349. - bytecode_rewriter_target =
  4350. - "//build/android/bytecode:fragment_activity_replacer"
  4351. -}
  4352. -
  4353. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4354. -android_aar_prebuilt("google_play_services_cast_java") {
  4355. - aar_path = "libs/com_google_android_gms_play_services_cast/play-services-cast-17.0.0.aar"
  4356. - info_path = "libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info"
  4357. - deps = [
  4358. - ":androidx_core_core_java",
  4359. - ":androidx_mediarouter_mediarouter_java",
  4360. - ":google_play_services_base_java",
  4361. - ":google_play_services_basement_java",
  4362. - ":google_play_services_flags_java",
  4363. - ":google_play_services_tasks_java",
  4364. - ]
  4365. -
  4366. - # Removing drawables from GMS .aars as they are unused bloat.
  4367. - strip_drawables = true
  4368. -}
  4369. -
  4370. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4371. -android_aar_prebuilt("google_play_services_cast_framework_java") {
  4372. - aar_path = "libs/com_google_android_gms_play_services_cast_framework/play-services-cast-framework-17.0.0.aar"
  4373. - info_path = "libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info"
  4374. - deps = [
  4375. - ":androidx_appcompat_appcompat_java",
  4376. - ":androidx_collection_collection_java",
  4377. - ":androidx_core_core_java",
  4378. - ":androidx_fragment_fragment_java",
  4379. - ":androidx_media_media_java",
  4380. - ":androidx_mediarouter_mediarouter_java",
  4381. - ":androidx_recyclerview_recyclerview_java",
  4382. - ":google_play_services_base_java",
  4383. - ":google_play_services_basement_java",
  4384. - ":google_play_services_cast_java",
  4385. - ]
  4386. -
  4387. - # Removing all resources from cast framework as they are unused bloat.
  4388. - # Can only safely remove them when R8 will strip the path that accesses them.
  4389. - strip_resources = !is_java_debug
  4390. -}
  4391. -
  4392. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4393. -android_aar_prebuilt("google_play_services_fido_java") {
  4394. - aar_path = "libs/com_google_android_gms_play_services_fido/play-services-fido-18.1.0.aar"
  4395. - info_path = "libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info"
  4396. - deps = [
  4397. - ":google_play_services_base_java",
  4398. - ":google_play_services_basement_java",
  4399. - ":google_play_services_tasks_java",
  4400. - ]
  4401. -
  4402. - # Removing drawables from GMS .aars as they are unused bloat.
  4403. - strip_drawables = true
  4404. -}
  4405. -
  4406. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4407. -android_aar_prebuilt("google_play_services_gcm_java") {
  4408. - aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
  4409. - info_path = "libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info"
  4410. - deps = [
  4411. - ":androidx_collection_collection_java",
  4412. - ":androidx_core_core_java",
  4413. - ":androidx_legacy_legacy_support_core_utils_java",
  4414. - ":google_play_services_base_java",
  4415. - ":google_play_services_basement_java",
  4416. - ":google_play_services_iid_java",
  4417. - ":google_play_services_stats_java",
  4418. - ]
  4419. -
  4420. - # Removing drawables from GMS .aars as they are unused bloat.
  4421. - strip_drawables = true
  4422. -}
  4423. -
  4424. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4425. -android_aar_prebuilt("google_play_services_iid_java") {
  4426. - aar_path = "libs/com_google_android_gms_play_services_iid/play-services-iid-17.0.0.aar"
  4427. - info_path = "libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info"
  4428. - deps = [
  4429. - ":androidx_collection_collection_java",
  4430. - ":androidx_core_core_java",
  4431. - ":google_play_services_base_java",
  4432. - ":google_play_services_basement_java",
  4433. - ":google_play_services_stats_java",
  4434. - ":google_play_services_tasks_java",
  4435. - ]
  4436. -
  4437. - # Removing drawables from GMS .aars as they are unused bloat.
  4438. - strip_drawables = true
  4439. -}
  4440. -
  4441. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4442. -android_aar_prebuilt("google_play_services_instantapps_java") {
  4443. - aar_path = "libs/com_google_android_gms_play_services_instantapps/play-services-instantapps-17.0.0.aar"
  4444. - info_path = "libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info"
  4445. - deps = [
  4446. - ":google_play_services_base_java",
  4447. - ":google_play_services_basement_java",
  4448. - ":google_play_services_tasks_java",
  4449. - ]
  4450. -
  4451. - # Removing drawables from GMS .aars as they are unused bloat.
  4452. - strip_drawables = true
  4453. -}
  4454. -
  4455. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4456. -android_aar_prebuilt("google_play_services_location_java") {
  4457. - aar_path = "libs/com_google_android_gms_play_services_location/play-services-location-17.0.0.aar"
  4458. - info_path = "libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info"
  4459. - deps = [
  4460. - ":google_play_services_base_java",
  4461. - ":google_play_services_basement_java",
  4462. - ":google_play_services_places_placereport_java",
  4463. - ":google_play_services_tasks_java",
  4464. - ]
  4465. -
  4466. - # Removing drawables from GMS .aars as they are unused bloat.
  4467. - strip_drawables = true
  4468. -}
  4469. -
  4470. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4471. -android_aar_prebuilt("google_play_services_tasks_java") {
  4472. - aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-17.0.0.aar"
  4473. - info_path = "libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info"
  4474. - deps = [ ":google_play_services_basement_java" ]
  4475. -
  4476. - # Removing drawables from GMS .aars as they are unused bloat.
  4477. - strip_drawables = true
  4478. -}
  4479. -
  4480. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4481. -android_aar_prebuilt("google_play_services_vision_java") {
  4482. - aar_path = "libs/com_google_android_gms_play_services_vision/play-services-vision-18.0.0.aar"
  4483. - info_path = "libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info"
  4484. - deps = [
  4485. - ":google_play_services_base_java",
  4486. - ":google_play_services_basement_java",
  4487. - ":google_play_services_vision_common_java",
  4488. - ]
  4489. -
  4490. - # Removing drawables from GMS .aars as they are unused bloat.
  4491. - strip_drawables = true
  4492. -}
  4493. -
  4494. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4495. -android_aar_prebuilt("google_play_services_vision_common_java") {
  4496. - aar_path = "libs/com_google_android_gms_play_services_vision_common/play-services-vision-common-18.0.0.aar"
  4497. - info_path = "libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info"
  4498. - deps = [
  4499. - ":google_play_services_base_java",
  4500. - ":google_play_services_basement_java",
  4501. - ":google_play_services_clearcut_java",
  4502. - ":google_play_services_flags_java",
  4503. - ":google_play_services_phenotype_java",
  4504. - ]
  4505. -
  4506. - # Removing drawables from GMS .aars as they are unused bloat.
  4507. - strip_drawables = true
  4508. -}
  4509. -
  4510. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4511. android_aar_prebuilt("com_google_android_material_material_java") {
  4512. aar_path =
  4513. @@ -1806,20 +1565,6 @@ java_prebuilt("org_robolectric_shadows_multidex_java") {
  4514. bypass_platform_checks = true
  4515. }
  4516. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4517. -java_prebuilt("org_robolectric_shadows_playservices_java") {
  4518. - jar_path =
  4519. - "libs/org_robolectric_shadows_playservices/shadows-playservices-4.3.1.jar"
  4520. - output_name = "org_robolectric_shadows_playservices"
  4521. - enable_bytecode_checks = false
  4522. - testonly = true
  4523. - deps = [
  4524. - ":com_google_guava_guava_java",
  4525. - ":org_robolectric_annotations_java",
  4526. - ]
  4527. - bypass_platform_checks = true
  4528. -}
  4529. -
  4530. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4531. java_prebuilt("org_robolectric_utils_java") {
  4532. jar_path = "libs/org_robolectric_utils/utils-4.3.1.jar"
  4533. @@ -2352,93 +2097,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
  4534. visibility = [ ":*" ]
  4535. }
  4536. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4537. -android_aar_prebuilt("google_play_services_clearcut_java") {
  4538. - aar_path = "libs/com_google_android_gms_play_services_clearcut/play-services-clearcut-17.0.0.aar"
  4539. - info_path = "libs/com_google_android_gms_play_services_clearcut/com_google_android_gms_play_services_clearcut.info"
  4540. -
  4541. - # To remove visibility constraint, add this dependency to
  4542. - # //third_party/android_deps/build.gradle.
  4543. - visibility = [ ":*" ]
  4544. - deps = [
  4545. - ":androidx_core_core_java",
  4546. - ":google_play_services_base_java",
  4547. - ":google_play_services_basement_java",
  4548. - ":google_play_services_phenotype_java",
  4549. - ":google_play_services_tasks_java",
  4550. - ]
  4551. -
  4552. - # Removing drawables from GMS .aars as they are unused bloat.
  4553. - strip_drawables = true
  4554. -}
  4555. -
  4556. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4557. -android_aar_prebuilt("google_play_services_flags_java") {
  4558. - aar_path = "libs/com_google_android_gms_play_services_flags/play-services-flags-17.0.0.aar"
  4559. - info_path = "libs/com_google_android_gms_play_services_flags/com_google_android_gms_play_services_flags.info"
  4560. -
  4561. - # To remove visibility constraint, add this dependency to
  4562. - # //third_party/android_deps/build.gradle.
  4563. - visibility = [ ":*" ]
  4564. - deps = [
  4565. - ":google_play_services_base_java",
  4566. - ":google_play_services_basement_java",
  4567. - ]
  4568. -
  4569. - # Removing drawables from GMS .aars as they are unused bloat.
  4570. - strip_drawables = true
  4571. -}
  4572. -
  4573. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4574. -android_aar_prebuilt("google_play_services_phenotype_java") {
  4575. - aar_path = "libs/com_google_android_gms_play_services_phenotype/play-services-phenotype-17.0.0.aar"
  4576. - info_path = "libs/com_google_android_gms_play_services_phenotype/com_google_android_gms_play_services_phenotype.info"
  4577. -
  4578. - # To remove visibility constraint, add this dependency to
  4579. - # //third_party/android_deps/build.gradle.
  4580. - visibility = [ ":*" ]
  4581. - deps = [
  4582. - ":androidx_core_core_java",
  4583. - ":google_play_services_base_java",
  4584. - ":google_play_services_basement_java",
  4585. - ":google_play_services_tasks_java",
  4586. - ]
  4587. -
  4588. - # Removing drawables from GMS .aars as they are unused bloat.
  4589. - strip_drawables = true
  4590. -}
  4591. -
  4592. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4593. -android_aar_prebuilt("google_play_services_places_placereport_java") {
  4594. - aar_path = "libs/com_google_android_gms_play_services_places_placereport/play-services-places-placereport-17.0.0.aar"
  4595. - info_path = "libs/com_google_android_gms_play_services_places_placereport/com_google_android_gms_play_services_places_placereport.info"
  4596. -
  4597. - # To remove visibility constraint, add this dependency to
  4598. - # //third_party/android_deps/build.gradle.
  4599. - visibility = [ ":*" ]
  4600. - deps = [ ":google_play_services_basement_java" ]
  4601. -
  4602. - # Removing drawables from GMS .aars as they are unused bloat.
  4603. - strip_drawables = true
  4604. -}
  4605. -
  4606. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4607. -android_aar_prebuilt("google_play_services_stats_java") {
  4608. - aar_path = "libs/com_google_android_gms_play_services_stats/play-services-stats-17.0.0.aar"
  4609. - info_path = "libs/com_google_android_gms_play_services_stats/com_google_android_gms_play_services_stats.info"
  4610. -
  4611. - # To remove visibility constraint, add this dependency to
  4612. - # //third_party/android_deps/build.gradle.
  4613. - visibility = [ ":*" ]
  4614. - deps = [
  4615. - ":androidx_legacy_legacy_support_core_utils_java",
  4616. - ":google_play_services_basement_java",
  4617. - ]
  4618. -
  4619. - # Removing drawables from GMS .aars as they are unused bloat.
  4620. - strip_drawables = true
  4621. -}
  4622. -
  4623. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  4624. java_prebuilt("com_google_auto_auto_common_java") {
  4625. jar_path = "libs/com_google_auto_auto_common/auto-common-0.10.jar"
  4626. diff --git a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
  4627. --- a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
  4628. +++ b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
  4629. @@ -5,9 +5,6 @@ package org.chromium.gms;
  4630. import android.content.Context;
  4631. -import com.google.android.gms.common.ConnectionResult;
  4632. -import com.google.android.gms.common.GoogleApiAvailability;
  4633. -
  4634. // Refer to go/doubledown-play-services#new-apis for more detail.
  4635. public final class ChromiumPlayServicesAvailability {
  4636. /**
  4637. @@ -30,9 +27,7 @@ public final class ChromiumPlayServicesAvailability {
  4638. * PM/UX.
  4639. */
  4640. public static boolean isGooglePlayServicesAvailable(final Context context) {
  4641. - return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
  4642. - context, GMS_VERSION_NUMBER)
  4643. - == ConnectionResult.SUCCESS;
  4644. + return false;
  4645. }
  4646. /**
  4647. @@ -50,7 +45,6 @@ public final class ChromiumPlayServicesAvailability {
  4648. * PM/UX.
  4649. */
  4650. public static int getGooglePlayServicesConnectionResult(final Context context) {
  4651. - return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
  4652. - context, GMS_VERSION_NUMBER);
  4653. + return 16; // API_UNAVAILABLE
  4654. }
  4655. }
  4656. diff --git a/third_party/android_sdk/BUILD.gn b/third_party/android_sdk/BUILD.gn
  4657. --- a/third_party/android_sdk/BUILD.gn
  4658. +++ b/third_party/android_sdk/BUILD.gn
  4659. @@ -63,7 +63,4 @@ if (enable_java_templates) {
  4660. testonly = true
  4661. sources = [ "//third_party/android_sdk/public/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
  4662. }
  4663. - android_java_prebuilt("android_gcm_java") {
  4664. - jar_path = "//third_party/android_sdk/public/extras/google/gcm/gcm-client/dist/gcm.jar"
  4665. - }
  4666. }
  4667. diff --git a/third_party/google_android_play_core/BUILD.gn b/third_party/google_android_play_core/BUILD.gn
  4668. --- a/third_party/google_android_play_core/BUILD.gn
  4669. +++ b/third_party/google_android_play_core/BUILD.gn
  4670. @@ -3,8 +3,3 @@
  4671. # found in the LICENSE file.
  4672. import("//build/config/android/rules.gni")
  4673. -
  4674. -android_aar_prebuilt("com_google_android_play_core_java") {
  4675. - aar_path = "core-1.6.4.aar"
  4676. - info_path = "com_google_android_play_core.info"
  4677. -}
  4678. --
  4679. 2.17.1