When i remove mozac_ic_extensions_black.xml ...
and compile for 16 ...  I get...

Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than 
version 21 declared in library 
[org.mozilla.components:browser-engine-gecko-nightly:41.0.20200507130125] 
C:\Users\bobac\.gradle\caches\transforms-2\files-2.1\0ec1ee6ba64b3cf1f78ee1f2160b6537\jetified-browser-engine-gecko-nightly-41.0.20200507130125\AndroidManifest.xml
 as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 21,
or use tools:overrideLibrary="mozilla.components.browser.engine.gecko" to force 
usage (may lead to runtime failures)


Any suggestions as to how to get Resource Browser to compile with minSDK 16?

Thanks!
Bob

________________________________
From: Bob Achgill <bobachg...@hotmail.com>
Sent: Friday, May 15, 2020 1:02 PM
To: Sebastian Kaspari <skasp...@mozilla.com>
Cc: Agi Sferro <asfe...@mozilla.com>; mobile-firefox-dev 
<mobile-firefox-dev@mozilla.org>; android-components-team 
<android-components-t...@mozilla.com>; Bob Achgill <bobachg...@hotmail.com>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Hey guys,

What can I throw overboard to get Reference Browser to compile to 16 instead of 
21?  Many of users in the developing world still are back in Android 4.1+.

The His Hands Reader mother tongue literacy app looks and runs really great 
with Reference Browser included.  Hope to go live soon.

Here is the list of things that complain using 16...  They seem superficial but 
I just don't know what and how to tweak...

Cause 1: 
org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A 
failure occurred while executing 
com.android.build.gradle.internal.tasks.Workers$ActionFacade
at 
org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:375)
at 
org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
at 
org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:90)
at 
org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:80)
at 
org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:68)
at 
org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:274)
at 
com.android.build.gradle.internal.tasks.Workers$WorkerExecutorAdapter.await(Workers.kt:295)
at com.android.ide.common.resources.MergeWriter.end(MergeWriter.java:48)
at 
com.android.ide.common.resources.MergedResourceWriter.end(MergedResourceWriter.java:241)
at com.android.ide.common.resources.DataMerger.mergeData(DataMerger.java:292)
at 
com.android.ide.common.resources.ResourceMerger.mergeData(ResourceMerger.java:384)
at 
com.android.build.gradle.tasks.MergeResources.lambda$doFullTaskAction$1(MergeResources.java:248)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:58)
at 
com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:244)
at 
com.android.build.gradle.internal.tasks.IncrementalTask.handleIncrementalInputs(IncrementalTask.kt:107)
at 
com.android.build.gradle.internal.tasks.IncrementalTask.access$handleIncrementalInputs(IncrementalTask.kt:64)
at 
com.android.build.gradle.internal.tasks.IncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:73)
at 
com.android.build.gradle.internal.tasks.IncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:34)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:91)
at 
com.android.build.gradle.internal.tasks.IncrementalTask.taskAction$gradle(IncrementalTask.kt:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at 
org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)
at 
org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
at 
org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
at 
org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at 
org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at 
org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at 
org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461)
at 
org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444)
at 
org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93)
at 
org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237)
at 
org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
at java.util.Optional.map(Optional.java:215)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at 
org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
at 
org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at 
org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at 
org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
at 
org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
at 
org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at 
org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
at 
org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at 
org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
at 
org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
at 
org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
at 
org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at 
org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
at 
org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
at 
org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at 
org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at 
org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at 
org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at java.util.Optional.map(Optional.java:215)
at 
org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
at 
org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at 
org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
at 
org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at 
org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at 
org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at 
org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
at 
org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
at 
org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69)
at 
org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47)
at 
org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at 
org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140)
at 
org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
at 
org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at 
org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at 
org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at 
org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at 
org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at 
org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at 
org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at 
org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at 
org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at 
org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at 
org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at 
org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at 
org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at 
org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at 
org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at 
org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at 
org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at 
org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at 
org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at 
org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at 
org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at 
org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at 
org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at 
org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at 
org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at 
org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at 
org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at 
org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Error while processing 
C:\1\1-Gecko-RBM_7i\reference-browser-master\app\src\main\res\drawable\mozac_ic_extensions_black.xml
 : Can't process attribute android:fillColor="@android:color/black": references 
to other resources are not supported by build-time PNG generation.
File was preprocessed as vector drawable support was added in Android 5.0 (API 
level 21)
See http://developer.android.com/tools/help/vector-asset-studio.html for 
details.

etc.etc.

________________________________
From: Bob Achgill <bobachg...@hotmail.com>
Sent: Wednesday, May 13, 2020 12:56 PM
To: Sebastian Kaspari <skasp...@mozilla.com>
Cc: Agi Sferro <asfe...@mozilla.com>; mobile-firefox-dev 
<mobile-firefox-dev@mozilla.org>; android-components-team 
<android-components-t...@mozilla.com>; Bob Achgill <bobachg...@hotmail.com>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Hi Sebastian,

I've done some research.  It seems that others have problems with pop-up videos 
still playing after the user closes the html page that spawned the video.  It 
appears to me (not being a programmer) that html 5 video player allows for 
playing a video in a popup mode but does not give it its own window added to 
the back stack.  That serves as a house keeping problem when the user wants to 
exit the popup video .... the only thing that exits is the most recent thing in 
the back stack... which is the html page that spawned the popup video.  Which 
leaves the popup video being an orphan still playing but now not being able to 
be seen.  This looks like a design flaw with how HTML 5 was implemented on 
Android?

In any case, it appears that the issue is not with the reference browser or 
GeckoView.  My way forward is either to train the user not to use the phone 
back button but instead to press the playlist stop button to stop.  Or find a 
JS means to have the player play the video in a window that adds to the back 
stack.  So that when the user presses the back button they get the expected 
result.  If you have any idea on how that's done... I'm open to suggestions.

Sorry for the fire drill.

Thanks!

Bob

________________________________
From: Bob Achgill <bobachg...@hotmail.com>
Sent: Tuesday, May 12, 2020 1:41 PM
To: Sebastian Kaspari <skasp...@mozilla.com>
Cc: Agi Sferro <asfe...@mozilla.com>; mobile-firefox-dev 
<mobile-firefox-dev@mozilla.org>; android-components-team 
<android-components-t...@mozilla.com>; Bob Achgill <bobachg...@hotmail.com>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Thanks for the clarifying question.  The JS plays the video(s) in the playlist 
in non Fullscreen.  It is in the standard, overlay, form of playing the video 
that the back press button exits the reference browser instead of the expected 
just exiting the video but leaving the html... and i still hear the video 
playing.

When I press the full screen icon on the playing video it goes to Full 
screen... and correctly returns to the standard overlay video when I press the 
phone back button.  So the issue is narrowed to what happens when the back 
button is pressed while playing overlay video.

________________________________
From: Sebastian Kaspari <skasp...@mozilla.com>
Sent: Tuesday, May 12, 2020 1:28 PM
To: Bob Achgill <bobachg...@hotmail.com>
Cc: Agi Sferro <asfe...@mozilla.com>; mobile-firefox-dev 
<mobile-firefox-dev@mozilla.org>; android-components-team 
<android-components-t...@mozilla.com>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Are you putting the browser into fullscreen mode from your JS code? That seems 
to be missing in the snippet you posted.

https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FFullscreen_API&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832403618&sdata=gY6lXreCAPJB3JvjEkHkPK%2F6E67LdlVdSnTwe68abLM%3D&reserved=0>

On Tue, May 12, 2020, 20:24 Bob Achgill 
<bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>> wrote:
Would you like a copy of the html that I run when I get the get the back button 
anomaly?

Or I can make a video of the debug and send to you?

Basically the anomaly happens when JS in the html stored in my app assets is 
pro-grammatically playing a video and the phone back button is pressed while 
the video is playing.

Thanks!
Bob Achgill

________________________________
From: Bob Achgill <bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>>
Sent: Monday, May 11, 2020 6:08 PM
To: Sebastian Kaspari <skasp...@mozilla.com<mailto:skasp...@mozilla.com>>
Cc: Agi Sferro <asfe...@mozilla.com<mailto:asfe...@mozilla.com>>; 
mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org> 
<mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org>>; 
android-components-team 
<android-components-t...@mozilla.com<mailto:android-components-t...@mozilla.com>>;
 Bob Achgill <bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

I did some testing on the unmodified Reference Browser code running my local 
html and was able to recreate what appears to be a back button anomaly.

When my html starts a video using a href tag ... no problem... the back button 
will kill the video and revert to the last seen place in the html.

But when my html/JS starts a video using ...
                            vid_new = document.getElementById("video_player");
                            vid_new.src = "video/" + current_video_name + ".mp4"
                            vid_new.style.display = "block"
                            vid_new.style.visibility = "visible";
                            vid_new.load();
... pressing the back button reverts the screen back to the phone desktop... 
but I still here the video playing.  When I press the show all running apps 
button on the phone I see the Reference Browser in the list of running apps ... 
but when I try to select it I get a message that it can't open it... and it 
goes away from the list of open apps.

So essentially that is the same functional error I am seeing.  It seems like 
Reference Browser is not aware that the html js is running a video and needs to 
add it to the back stack?

Or is that the expected result?

Thanks,
Bob Achgill



________________________________
From: Sebastian Kaspari <skasp...@mozilla.com<mailto:skasp...@mozilla.com>>
Sent: Monday, May 11, 2020 6:45 AM
To: Bob Achgill <bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>>
Cc: Agi Sferro <asfe...@mozilla.com<mailto:asfe...@mozilla.com>>; 
mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org> 
<mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org>>; 
android-components-team 
<android-components-t...@mozilla.com<mailto:android-components-t...@mozilla.com>>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Your code looks okay and the expected behavior is that we only leave 
fullscreen. Once you press "back" again you'll leave the activity.

This handled here:
https://github.com/mozilla-mobile/reference-browser/blob/master/app/src/main/java/org/mozilla/reference/browser/BrowserActivity.kt#L79-L89<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser%2Fblob%2Fmaster%2Fapp%2Fsrc%2Fmain%2Fjava%2Forg%2Fmozilla%2Freference%2Fbrowser%2FBrowserActivity.kt%23L79-L89&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832413613&sdata=Ky6FfZ%2Be8C4UGv4X1wHFEDRhO3SuLmQDeZv3wHAQYY4%3D&reserved=0>

When in full screen the BrowserFragment should handle the back press in this 
case and we return early and never call super.onBackPressed() to leave the 
activity. Testing with Reference Browser this seems to be the case (at least on 
YouTube). Not sure what is going wrong in your case, but maybe that helps you 
debug. If you can reproduce this with an unmodified Reference Browser and a 
specific fullscreen site then please let us know and we can try to debug it on 
our side.

Best,
Sebastian



On Sun, May 10, 2020 at 7:43 AM Bob Achgill 
<bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>> wrote:
Thanks Sebastian!

Sweet!  Your examples rock!  They were easy to follow... and I'm sure there are 
many who will want to follow the same path as you have laid out for me.  
Especially now that Google has added Asset Delivery for local assets up to 
1GB+.  That will open the door for garage app developers like myself to 
distribute their multi-media html teaching curriculum laden with video clips 
via the Play Store.  Now that GeckoView enables good full screen video play 
within an app webview its a game changer.

One more thing... when I integrate the reference-browser screens with my screen 
I made my main menu with button to start the BrowserActivity.   ALL works well 
until I press the back button after playing an html video in the browser... 
pressing back once takes me out of the video but also back out of the browser 
to my main menu with that one click.


Here is what I have in my app main menu that starts the BrowserActivity...

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main_menu)


    btnStartBrowserActivity.setOnClickListener {
        val intent = Intent(this, BrowserActivity::class.java)
        // start your next activity
        startActivity(intent)
    }

Here is the change i made to the manifest to make my main menu be the launcher 
activity instead of the browser activity.


<activity android:name=".MainMenuActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name=".BrowserActivity"
    
android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
    android:launchMode="singleTask"
    android:resizeableActivity="true"
    android:supportsPictureInPicture="true"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity> <!-- This needed for some tooling to launch mozilla-based browsers 
like web-ext. -->
<activity-alias
    android:name="${applicationId}.App"
    android:targetActivity=".BrowserActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <!--     <category android:name="android.intent.category.LAUNCHER" /> 
-->
       </intent-filter>
   </activity-alias>


Did i make the proper changes... if so ... is that the expected result from 
pressing the back button once while playing a video within the browser activity?

One suggestion...  It may be helpful for those who are transitioning from using 
webview to mention that Geckoview accesses local asset resources a little 
differently...

resource://android/assets/www/Start.html

instead of ...

file:///android_asset/www/Start.html

I learned this tip from here... 
https://github.com/mozilla-mobile/android-components/issues/5968<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Fandroid-components%2Fissues%2F5968&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832413613&sdata=TwHQsaEsH1KUGDVexP4MUjaJE6KpFgJxdFfHjGpAqNo%3D&reserved=0>

Thanks so much!

Bob Achgill

________________________________
From: Sebastian Kaspari <skasp...@mozilla.com<mailto:skasp...@mozilla.com>>
Sent: Friday, May 8, 2020 12:44 PM
To: Agi Sferro <asfe...@mozilla.com<mailto:asfe...@mozilla.com>>
Cc: Bob Achgill <bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>>; 
mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org> 
<mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org>>; 
android-components-team 
<android-components-t...@mozilla.com<mailto:android-components-t...@mozilla.com>>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Hey Bob,

here are some patches that may help you:

1. Open a tab on startup (if there is none from the last time):
https://github.com/mozilla-mobile/reference-browser/commit/723809fb55c771a833a5a565e0d1ecb83901fd23<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser%2Fcommit%2F723809fb55c771a833a5a565e0d1ecb83901fd23&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832423614&sdata=dJeCSyA6NY1wmg9cLofBLz7XiOTXr1No7fz218zIkIc%3D&reserved=0>

2. Open a tab if the last tab was closed:
https://github.com/mozilla-mobile/reference-browser/commit/895bb01d2c85b41d41ac15500db37d4511c29485<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser%2Fcommit%2F895bb01d2c85b41d41ac15500db37d4511c29485&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832423614&sdata=6zml4MJwX375d5qUpr5IfOra0MycYF3WqQBxCKQnHnQ%3D&reserved=0>

3. Changing start URL of new tabs:
https://github.com/mozilla-mobile/reference-browser/commit/2c11d07bdf7084e8eb9c2a0d8f06d3f79d3e6961<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser%2Fcommit%2F2c11d07bdf7084e8eb9c2a0d8f06d3f79d3e6961&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832433608&sdata=pL8x7zX26jyWUYAmEFlII3mZK%2FqmXTTuTN2IuBM2e30%3D&reserved=0>

4. Hiding menu button:
https://github.com/mozilla-mobile/reference-browser/commit/6a34c619228f3b1558ea83581d167b2d5f2c0cb7<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser%2Fcommit%2F6a34c619228f3b1558ea83581d167b2d5f2c0cb7&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832433608&sdata=cn4RpPrUjLjaS9MEPZ8B6vwVRDP6SHUZ4ztHE2zUR04%3D&reserved=0>

Best,
Sebastian



On Fri, May 8, 2020 at 7:15 PM Agi Sferro 
<asfe...@mozilla.com<mailto:asfe...@mozilla.com>> wrote:
+ Android Componets team who work on the Reference Browser.

On Fri, May 8, 2020 at 12:22 AM Bob Achgill 
<bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>> wrote:
Agi,

The [1]: 
https://github.com/mozilla-mobile/reference-browser<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832443604&sdata=XVrjZ7%2Fb5vV1T3I5AIgjc1TrSe%2BaUwBqqVXwNmuTlv8%3D&reserved=0>
works great!  It does tabs, Full screen video.  It saves the tabs on reopening.

1)  Can you point me to where I can put in my start html local path when the 
first tab and subsequent tabs are initiated?

And...

2) How can I hide the triple vertical dot menu from being seen by the user?

I know that sounds crude but it serves my near term need of getting our html 
video intensive curriculum out to students out of school due to Covid-19 school 
closure.  The good news for Mozilla is that in short order you will get a lot 
of testing done across a large number of devices across the developing world 
for the mainline part of your reference-browser.  The fact that I will not 
touch the inner workings of your code base of the reference-browser will mean 
that when I pass back an issue that a student mentions you can be more sure of 
how your code is responding on other lower versions of Android.

Thanks!

Bob Achgill
www.HisHandsReader.org<https://eur05.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.hishandsreader.org%2F&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832443604&sdata=IlGtFpT02gabkrM7vzd7XjVG2mL2oNRUPQaRyN7Gzvc%3D&reserved=0>

________________________________
From: Agi Sferro <asfe...@mozilla.com<mailto:asfe...@mozilla.com>>
Sent: Wednesday, May 6, 2020 3:33 PM
To: Bob Achgill <bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>>
Cc: mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org> 
<mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org>>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

Hey Bob.

I agree, getting an example to compile is a good first step. Unfortunately we 
don't provide a version on github, but maybe we should.

We have an example project on github that uses Android Components which 
provides many reusable components on top of GeckoView [1]

If you still want to build GeckoViewExample what you need to do is add a root 
build.gradle file like this one that specifies topobjdir: [2]
change this line to refer to a released version of GeckoView: [3]
e.g. "org.mozilla.geckoview:geckoview-nightly:78.0.20200505094621" and remove 
this line [4].

feel free to chat with us at 
https://chat.mozilla.org/#/room/#geckoview:mozilla.org<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchat.mozilla.org%2F%23%2Froom%2F%23geckoview%3Amozilla.org&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832453600&sdata=oVeIW7s%2BJeWt2pvisL9HDVmsoApBAQvrUNLElCGF794%3D&reserved=0>

Cheers,

[1]: 
https://github.com/mozilla-mobile/reference-browser<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Freference-browser&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832453600&sdata=fylBdpcl9jUODebqVC2xUxe7K8djEFbe9i9IlxfhWlU%3D&reserved=0>
[2]: 
https://github.com/mozilla-mobile/gradle-apilint/blob/master/build.gradle<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Fgradle-apilint%2Fblob%2Fmaster%2Fbuild.gradle&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832453600&sdata=5Okh2%2BtcQtFNzp1Yx6dh%2BVi9vseT3zcSrDukRf4b8sk%3D&reserved=0>
[3]: 
https://searchfox.org/mozilla-central/rev/dc4560dcaafd79375b9411fdbbaaebb0a59a93ac/mobile/android/geckoview_example/build.gradle#56<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsearchfox.org%2Fmozilla-central%2Frev%2Fdc4560dcaafd79375b9411fdbbaaebb0a59a93ac%2Fmobile%2Fandroid%2Fgeckoview_example%2Fbuild.gradle%2356&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832463592&sdata=A5HZnyDgx%2Bgbx37CxZEYHqEU6LlL4iZLYoqnFd8Ie04%3D&reserved=0>
[4]: 
https://searchfox.org/mozilla-central/rev/dc4560dcaafd79375b9411fdbbaaebb0a59a93ac/mobile/android/geckoview_example/build.gradle#5<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsearchfox.org%2Fmozilla-central%2Frev%2Fdc4560dcaafd79375b9411fdbbaaebb0a59a93ac%2Fmobile%2Fandroid%2Fgeckoview_example%2Fbuild.gradle%235&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832463592&sdata=7sYcBUBnEeHgvcq0CP4dUSPB5%2Bk59Hvs4T90xepCOko%3D&reserved=0>

On Wed, May 6, 2020 at 12:30 PM Bob Achgill 
<bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>> wrote:
Thanks Agi!

I will look through the Example.

It would be good if i could get the Example to compile so i can see how each 
feature looks.  I could not find a GitHub version of the Example to download... 
so i tried copying each activity, manifest, layout, and gradle and recreating a 
AS project Example.  But when I run it i get an error.  Doing all that by hand 
I probably missed something.

If there is no better way to get a copy of the Example... can you suggest what 
i may have missed by looking at the error?

Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 
'topobjdir' for project ':app' of type org.gradle.api.Project.

Thanks!
Bob Achgill

________________________________
From: Agi Sferro <asfe...@mozilla.com<mailto:asfe...@mozilla.com>>
Sent: Tuesday, May 5, 2020 12:09 PM
To: Bob Achgill <bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>>
Cc: mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org> 
<mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org>>
Subject: Re: GeckoView to help kids continue to learn at home in lockdown in 
developing countries

> you're trying to create a GeckoRuntime

This should read: you're trying to  re-create a GeckoRuntime, in essence you 
can only create the runtime in a given process once. When rotating Android 
re-uses the process of your app and re-runs the initialization code, causing 
the runtime to be created a second time.

On Tue, May 5, 2020 at 10:07 AM Agi Sferro 
<asfe...@mozilla.com<mailto:asfe...@mozilla.com>> wrote:
Hi Bob, that's pretty cool!

GeckoView should support Android 4.1 (API level 16) for all versions, however 
we don't test on that version, so you might encounter bugs.

The crash on rotation is probably due to the fact that you're trying to create 
a GeckoRuntime in the same process, you can deal with this using a static 
variable for the runtime, see [1].

GeckoViewExample (code linked above) supports tabs, you can get an idea how to 
implement that from reading the code. In essence you would create a 
`GeckoSession` for each tab and then call `geckoView.setSession(session)`, see 
also [2].

[1]: 
https://searchfox.org/mozilla-central/rev/7908ce29657cfd623993046bd8e38664e1c0b28e/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java#377<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsearchfox.org%2Fmozilla-central%2Frev%2F7908ce29657cfd623993046bd8e38664e1c0b28e%2Fmobile%2Fandroid%2Fgeckoview_example%2Fsrc%2Fmain%2Fjava%2Forg%2Fmozilla%2Fgeckoview_example%2FGeckoViewActivity.java%23377&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832473587&sdata=cjmCR2sipodUVGUL5oON8Nk%2FtxRe%2Fc71eDhG%2Bm%2Bp1lY%3D&reserved=0>
[2]: 
https://searchfox.org/mozilla-central/rev/7908ce29657cfd623993046bd8e38664e1c0b28e/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java#1030-1041<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsearchfox.org%2Fmozilla-central%2Frev%2F7908ce29657cfd623993046bd8e38664e1c0b28e%2Fmobile%2Fandroid%2Fgeckoview_example%2Fsrc%2Fmain%2Fjava%2Forg%2Fmozilla%2Fgeckoview_example%2FGeckoViewActivity.java%231030-1041&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832473587&sdata=ewg5GNfr%2Fg9PYGv6fShEhxPzKCAz6z9NqvwYqmcBrEU%3D&reserved=0>

On Tue, May 5, 2020 at 7:06 AM Bob Achgill 
<bobachg...@hotmail.com<mailto:bobachg...@hotmail.com>> wrote:
Hello GeckoView developers/users,

I am new to Java and GeckoView and have a few questions.  My use case is ...
There are presently 1.5 billion children out of school due to C19.
I am making a quick Geckoview app that they can use to continue to learn from 
home on their family smart phone.  Think Jelly Bean on up.
I already 1.8 GB mother tongue html video curriculums that we have been using 
firefox for them to locally browse the curriculum.
Here is where GeckoView comes in... it will be much easier for families to use 
an app integrated with the html viewing built in.

Here are my hurdles to getting GV going in my app
1) On both 70.0.20190712095934 and 77.0.20200421094220 my S7 GV crashes when 
turning the phone between portrait and landscape.  That seems like I must be 
doing something really wrong with setting up the GV session?  (see my activity 
below)

2) I have some clients on 4.1.  Is there a way of knowing which builds of GV 
support which min SDKs?  Is there a way to tweak GV to get down to support 4.1?

3) What is the code I add to support tabs?  Siblings in the same home then can 
use their own tab view after brother does his homework with no complaints.


Thanks so much!
Bob Achgill

PS  You can see from my code that I commented out lines in trying to set up the 
settings.  There is not much in the way of examples to follow that I just 
didn't get AS giving me complaints on so i had to // them out.  So please feel 
free to add to my humble attempts!  Your inputs will help kids around the world 
start getting productive this week. :)
~~~

package org.hishandsreader.mygeckoview;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;

// GeckoView  
https://mozilla.github.io/geckoview/consumer/docs/geckoview-quick-start.html<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmozilla.github.io%2Fgeckoview%2Fconsumer%2Fdocs%2Fgeckoview-quick-start.html&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832483573&sdata=UkcOp9%2BzMWRnkyrmjl6kglhopNLhQflbCB6CjF5Q594%3D&reserved=0>
import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoRuntimeSettings;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoSessionSettings;
import org.mozilla.geckoview.GeckoView;





public class MainActivity extends AppCompatActivity {

    private GeckoView geckoview;
    private GeckoSession geckoSession;
    private GeckoRuntime geckoRuntime;
    // test
    private boolean mCanGoBack;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

// GeckoView  
https://mozilla.github.io/geckoview/consumer/docs/geckoview-quick-start.html<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmozilla.github.io%2Fgeckoview%2Fconsumer%2Fdocs%2Fgeckoview-quick-start.html&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832483573&sdata=UkcOp9%2BzMWRnkyrmjl6kglhopNLhQflbCB6CjF5Q594%3D&reserved=0>
        GeckoView view = findViewById(R.id.geckoview);

        geckoSession = new GeckoSession();
        
//geckoSession.getSettings().setBoolean(GeckoSessionSetttings.USE_MULTIPROCESS, 
true);
        
//geckoSession.getSettings().setBoolean(GeckoSessionSetttings.USE_DESKTOP_MODE, 
false);

        GeckoRuntimeSettings.Builder builder = new 
GeckoRuntimeSettings.Builder()
                .javaScriptEnabled(true)
                //// .nativeCrashReportingEnabled(true)
                .consoleOutput(true);

        geckoRuntime = GeckoRuntime.create(MainActivity.this, builder.build());

        ////geckoview.setSession(geckoSession geckoRuntime);

        geckoSession.open(geckoRuntime);
        view.setSession(geckoSession);


        //geckoSession.loadUri( 
"https://exploitrme.wordpress.com/<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fexploitrme.wordpress.com%2F&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832493567&sdata=UuFd7VnM6gjTHyIVf1QsKF5TQd0V0RF34tRLo9U9nuI%3D&reserved=0>");

        
//https://github.com/mozilla-mobile/android-components/issues/5968<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla-mobile%2Fandroid-components%2Fissues%2F5968&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832493567&sdata=fMCuN1FmkP2V2oGLBoU0QV8IKQ7e1huQLqFptkKTF5U%3D&reserved=0>
        
geckoSession.loadUri("resource://android/assets/www/HHR-Learn2Read.html");
        //TODO  Pixel api 19 never online
        //TODO  Pixl 29 shows app but no html
        //TODO  Bobs S7 works!! Backbutton works!
        //TODO get help try to understand this to sper backbutton?  
https://qiita.com/YusukeIwaki/items/3c25f7b73650c87180ba<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fqiita.com%2FYusukeIwaki%2Fitems%2F3c25f7b73650c87180ba&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832503561&sdata=rYbxbl2EHpdYdOR2ifJPd0EbY9s4DEpYZiuWEVdPo8A%3D&reserved=0>

        // In Japanese 
https://qiita.com/YusukeIwaki/items/3c25f7b73650c87180ba<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fqiita.com%2FYusukeIwaki%2Fitems%2F3c25f7b73650c87180ba&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832503561&sdata=rYbxbl2EHpdYdOR2ifJPd0EbY9s4DEpYZiuWEVdPo8A%3D&reserved=0>
        // @Override
        //public void onBackPressed()
        //{
        // session.goBack();
        //}


    }

    @Override
    public void onBackPressed() {
        //if (geckoSession.canGoBack()) {
        geckoSession.goBack();
        //} else {
        //    super.onBackPressed();
        //}
    }



// Does not appear to be doing anything.
    public void onFullScreen(GeckoSession geckoSession, boolean fullScreen) {
        if (fullScreen) {
            
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        } else {
            
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            geckoSession.exitFullScreen();
        }
    }
}


_______________________________________________
mobile-firefox-dev mailing list
mobile-firefox-dev@mozilla.org<mailto:mobile-firefox-dev@mozilla.org>
https://mail.mozilla.org/listinfo/mobile-firefox-dev<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.mozilla.org%2Flistinfo%2Fmobile-firefox-dev&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832513563&sdata=x3%2BBbKL%2FLDPItmCQJx6yxzpErFoapk7vB%2Fm4IBiUO54%3D&reserved=0>

--
You received this message because you are subscribed to the Google Groups 
"android-components-team" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
android-components-team+unsubscr...@mozilla.com<mailto:android-components-team+unsubscr...@mozilla.com>.
To view this discussion on the web visit 
https://groups.google.com/a/mozilla.com/d/msgid/android-components-team/CAKSVnnhp-b7_%2BHbCaZZt8n_Qav0DadwWRVk2EUbL3mk%3DKoryzw%40mail.gmail.com<https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fa%2Fmozilla.com%2Fd%2Fmsgid%2Fandroid-components-team%2FCAKSVnnhp-b7_%252BHbCaZZt8n_Qav0DadwWRVk2EUbL3mk%253DKoryzw%2540mail.gmail.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=02%7C01%7C%7C52a639c9612b4b74e20e08d7f8fa3436%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637251625832513563&sdata=%2B1k7m6VTol6agAp5h7CWtRxbaEjWHrYYGSLZofXfPiY%3D&reserved=0>.
_______________________________________________
mobile-firefox-dev mailing list
mobile-firefox-dev@mozilla.org
https://mail.mozilla.org/listinfo/mobile-firefox-dev

Reply via email to