Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
keianhzo committed Oct 5, 2018
1 parent 113d211 commit 389dbe6
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 10 deletions.
39 changes: 33 additions & 6 deletions app/src/common/shared/org/mozilla/vrbrowser/SessionStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,30 @@
import android.view.inputmethod.CursorAnchorInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest;

import org.mozilla.gecko.GeckoAppShell;
import org.mozilla.gecko.GeckoProfile;
import org.mozilla.geckoview.*;
import org.mozilla.geckoview.GeckoResult;
import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoRuntimeSettings;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoSessionSettings;
import org.mozilla.vrbrowser.telemetry.TelemetryWrapper;
import org.mozilla.vrbrowser.utils.ValueHolder;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class SessionStore implements GeckoSession.NavigationDelegate, GeckoSession.ProgressDelegate,
GeckoSession.ContentDelegate, GeckoSession.TextInputDelegate, GeckoSession.TrackingProtectionDelegate,
Expand Down Expand Up @@ -787,18 +801,31 @@ public GeckoResult<Boolean> onLoadRequest(@NonNull GeckoSession aSession,
@NonNull String aUri,
@TargetWindow int target,
@LoadRequestFlags int flags) {
GeckoResult<Boolean> result = new GeckoResult<>();

final GeckoResult<Boolean> result = new GeckoResult<>();
if (aUri.equalsIgnoreCase(PRIVATE_BROWSING_URI)) {
switchPrivateMode();
result.complete(true);

} else {
final ValueHolder<Integer> count = new ValueHolder(new Integer(0));
final ValueHolder<Boolean> listenersResult = new ValueHolder(new Boolean(false));
for (GeckoSession.NavigationDelegate listener: mNavigationListeners) {
listener.onLoadRequest(aSession, aUri, target, flags);
GeckoResult<Boolean> listenerResult = listener.onLoadRequest(aSession, aUri, target, flags);
listenerResult.then(new GeckoResult.OnValueListener<Boolean, Object>() {
@Nullable
@Override
public GeckoResult<Object> onValue(@Nullable Boolean value) {
listenersResult.setValue(listenersResult.getValue().booleanValue() | value);
if (count.getValue() == mNavigationListeners.size() - 1) {
result.complete(listenersResult.getValue());
}
count.setValue(count.getValue().intValue() + 1);

return null;
}
});
}

result.complete(false);
}

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ public GeckoResult<Boolean> onLoadRequest(GeckoSession aSession, final String aU
mURLBar.setURL(aUri);
}

final GeckoResult<Boolean> result = new GeckoResult<>();
if (aUri != null) {
Uri uri = Uri.parse(aUri);
if (uri.getScheme().equals("file")) {
Expand All @@ -411,19 +412,28 @@ public GeckoResult<Boolean> onLoadRequest(GeckoSession aSession, final String aU
new GeckoSession.PermissionDelegate.Callback() {
@Override
public void grant() {
SessionStore.get().reload();
result.complete(false);
}

@Override
public void reject() {
// Do nothing, let the default error page load
result.complete(false);
}
});

} else {
result.complete(false);
}

} else {
result.complete(false);
}

} else {
result.complete(false);
}

return GeckoResult.fromValue(true);
return result;
}

// Progress Listener
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,8 @@ public GeckoResult<Boolean> onLoadRequest(@NonNull GeckoSession session, @NonNul
if (mPromptDelegate != null) {
mPromptDelegate.onDismissed(getDefaultChoices(mListItems));
}
return null;

return GeckoResult.fromValue(false);
}

@Nullable
Expand Down
19 changes: 19 additions & 0 deletions app/src/common/shared/org/mozilla/vrbrowser/utils/ValueHolder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.mozilla.vrbrowser.utils;

public class ValueHolder<T> {

private T value;

public ValueHolder(T aValue) {
value = aValue;
}

public T getValue() {
return value;
}

public void setValue(Object newValue) {
value = (T) newValue;
}

}

0 comments on commit 389dbe6

Please sign in to comment.