Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(636)

Unified Diff: android_webview/glue/java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java

Issue 2201593002: aw: Add thread hops to more Adapter classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | android_webview/glue/java/src/com/android/webview/chromium/WebStorageAdapter.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/glue/java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java b/android_webview/glue/java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java
index fcb354002487584aaef008b685d6b66b887e8c8b..3d153a254a3e9f9629c7e486e6158dcea54ee317 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java
@@ -8,6 +8,7 @@ import android.webkit.GeolocationPermissions;
import android.webkit.ValueCallback;
import org.chromium.android_webview.AwGeolocationPermissions;
+import org.chromium.base.ThreadUtils;
import java.util.Set;
@@ -16,34 +17,93 @@ import java.util.Set;
* chromium internal implementation.
*/
final class GeolocationPermissionsAdapter extends GeolocationPermissions {
- private AwGeolocationPermissions mChromeGeolocationPermissions;
+ private final WebViewChromiumFactoryProvider mFactory;
+ private final AwGeolocationPermissions mChromeGeolocationPermissions;
- public GeolocationPermissionsAdapter(AwGeolocationPermissions chromeGeolocationPermissions) {
+ public GeolocationPermissionsAdapter(WebViewChromiumFactoryProvider factory,
+ AwGeolocationPermissions chromeGeolocationPermissions) {
+ mFactory = factory;
mChromeGeolocationPermissions = chromeGeolocationPermissions;
}
@Override
- public void allow(String origin) {
+ public void allow(final String origin) {
+ if (checkNeedsPost()) {
+ mFactory.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mChromeGeolocationPermissions.allow(origin);
+ }
+
+ });
+ return;
+ }
mChromeGeolocationPermissions.allow(origin);
}
@Override
- public void clear(String origin) {
+ public void clear(final String origin) {
+ if (checkNeedsPost()) {
+ mFactory.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mChromeGeolocationPermissions.clear(origin);
+ }
+
+ });
+ return;
+ }
mChromeGeolocationPermissions.clear(origin);
}
@Override
public void clearAll() {
+ if (checkNeedsPost()) {
+ mFactory.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mChromeGeolocationPermissions.clearAll();
+ }
+
+ });
+ return;
+ }
mChromeGeolocationPermissions.clearAll();
}
@Override
- public void getAllowed(String origin, ValueCallback<Boolean> callback) {
+ public void getAllowed(final String origin, final ValueCallback<Boolean> callback) {
+ if (checkNeedsPost()) {
+ mFactory.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mChromeGeolocationPermissions.getAllowed(origin, callback);
+ }
+
+ });
+ return;
+ }
mChromeGeolocationPermissions.getAllowed(origin, callback);
}
@Override
- public void getOrigins(ValueCallback<Set<String>> callback) {
+ public void getOrigins(final ValueCallback<Set<String>> callback) {
+ if (checkNeedsPost()) {
+ mFactory.addTask(new Runnable() {
+ @Override
+ public void run() {
+ mChromeGeolocationPermissions.getOrigins(callback);
+ }
+
+ });
+ return;
+ }
mChromeGeolocationPermissions.getOrigins(callback);
}
+
+ private static boolean checkNeedsPost() {
+ // Init is guaranteed to have happened if a GeolocationPermissionsAdapter is created, so do
+ // not need to check WebViewChromiumFactoryProvider.hasStarted.
+ return !ThreadUtils.runningOnUiThread();
+ }
}
« no previous file with comments | « no previous file | android_webview/glue/java/src/com/android/webview/chromium/WebStorageAdapter.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698