diff --git a/src/api-impl/android/content/AsyncQueryHandler.java b/src/api-impl/android/content/AsyncQueryHandler.java new file mode 100644 index 00000000..2b1a95b7 --- /dev/null +++ b/src/api-impl/android/content/AsyncQueryHandler.java @@ -0,0 +1,10 @@ +package android.content; + +import android.net.Uri; + +public class AsyncQueryHandler { + + public AsyncQueryHandler(ContentResolver cr) {} + + public void startQuery(int token, Object cookie, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {} +} diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java index 60df7ae6..d832b73d 100644 --- a/src/api-impl/android/content/Context.java +++ b/src/api-impl/android/content/Context.java @@ -4,6 +4,7 @@ import android.R; import android.app.Activity; import android.app.ActivityManager; import android.app.AlarmManager; +import android.app.AppOpsManager; import android.app.Application; import android.app.KeyguardManager; import android.app.NotificationManager; @@ -227,7 +228,8 @@ public class Context extends Object { return new BluetoothManager(); case "jobscheduler": return new JobScheduler(); - + case "appops": + return new AppOpsManager(); default: Slog.e(TAG, "!!!!!!! getSystemService: case >" + name + "< is not implemented yet"); return null; diff --git a/src/api-impl/android/content/pm/PackageManager.java b/src/api-impl/android/content/pm/PackageManager.java index d5a34b41..1f9daf61 100644 --- a/src/api-impl/android/content/pm/PackageManager.java +++ b/src/api-impl/android/content/pm/PackageManager.java @@ -1828,6 +1828,7 @@ public class PackageManager { case "com.google.android.c2dm.permission.SEND": case "com.fsck.k9.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION": case "net.thunderbird.android.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION": + case "de.danoeh.antennapod.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION": return PERMISSION_GRANTED; default: System.out.println("PackageManager.checkPermission: >" + permName + "< not handled\n"); diff --git a/src/api-impl/android/database/CursorWrapper.java b/src/api-impl/android/database/CursorWrapper.java index 24424a54..544acda2 100644 --- a/src/api-impl/android/database/CursorWrapper.java +++ b/src/api-impl/android/database/CursorWrapper.java @@ -213,4 +213,8 @@ public class CursorWrapper implements Cursor { public Bundle respond(Bundle extras) { return cursor.respond(extras); } + + public Cursor getWrappedCursor() { + return cursor; + } } diff --git a/src/api-impl/android/graphics/Bitmap.java b/src/api-impl/android/graphics/Bitmap.java index 93fc14e7..07be595e 100644 --- a/src/api-impl/android/graphics/Bitmap.java +++ b/src/api-impl/android/graphics/Bitmap.java @@ -207,6 +207,12 @@ public final class Bitmap { } } + public void setPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height) {} + + public void reconfigure(int width, int height, Bitmap.Config config) {} + + public void setPremultiplied(boolean premultiplied) {} + @SuppressWarnings("deprecation") @Override protected void finalize() throws Throwable { diff --git a/src/api-impl/android/graphics/LightingColorFilter.java b/src/api-impl/android/graphics/LightingColorFilter.java new file mode 100644 index 00000000..82bb2494 --- /dev/null +++ b/src/api-impl/android/graphics/LightingColorFilter.java @@ -0,0 +1,6 @@ +package android.graphics; + +public class LightingColorFilter extends ColorFilter { + + public LightingColorFilter(int lightColor, int shadowColor) {} +} diff --git a/src/api-impl/android/media/audiofx/AudioEffect.java b/src/api-impl/android/media/audiofx/AudioEffect.java new file mode 100644 index 00000000..2ae292f1 --- /dev/null +++ b/src/api-impl/android/media/audiofx/AudioEffect.java @@ -0,0 +1,10 @@ +package android.media.audiofx; + +public class AudioEffect { + + public static class Descriptor {} + + public static Descriptor[] queryEffects() { + return new Descriptor[0]; + } +} diff --git a/src/api-impl/android/media/session/MediaSession.java b/src/api-impl/android/media/session/MediaSession.java index 4d698f63..ff5ea85f 100644 --- a/src/api-impl/android/media/session/MediaSession.java +++ b/src/api-impl/android/media/session/MediaSession.java @@ -7,6 +7,7 @@ import android.content.Context; import android.media.AudioAttributes; import android.media.MediaDescription; import android.media.MediaMetadata; +import android.os.Bundle; import android.os.Handler; public class MediaSession { @@ -72,6 +73,14 @@ public class MediaSession { public void setPlaybackToLocal(AudioAttributes audioAttributes) {} + public void setExtras(Bundle extras) {} + + public void setSessionActivity(PendingIntent pendingIntent) {} + + public boolean isActive() { + return true; + } + protected native void nativeSetState(int state, long actions, long position, long updateTime, String title, String subTitle, String artUrl); protected native void nativeSetCallback(Callback callback); } diff --git a/src/api-impl/android/media/session/PlaybackState.java b/src/api-impl/android/media/session/PlaybackState.java index a269585d..d93c42e6 100644 --- a/src/api-impl/android/media/session/PlaybackState.java +++ b/src/api-impl/android/media/session/PlaybackState.java @@ -1,5 +1,7 @@ package android.media.session; +import android.os.Bundle; + public class PlaybackState { public int state; @@ -43,10 +45,23 @@ public class PlaybackState { return this; } + public Builder addCustomAction(CustomAction action) {return this;} + public PlaybackState build() { return state; } } + public static class CustomAction { + + public static class Builder { + public Builder(String action, CharSequence label, int icon) {} + + public Builder setExtras(Bundle extras) {return this;} + + public CustomAction build() {return new CustomAction();} + } + } + } diff --git a/src/api-impl/android/os/BaseBundle.java b/src/api-impl/android/os/BaseBundle.java index be6511dd..06b6042c 100644 --- a/src/api-impl/android/os/BaseBundle.java +++ b/src/api-impl/android/os/BaseBundle.java @@ -179,6 +179,17 @@ public class BaseBundle { mMap.put(key, value); } + /** + * Inserts a long array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a long array object, or null + */ + public void putLongArray(String key, long[] value) { + mMap.put(key, value); + } + /** * Inserts a String array value into the mapping of this Bundle, replacing * any existing value for the given key. Either key or value may be null. @@ -282,6 +293,27 @@ public class BaseBundle { return getInt(key, 0); } + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a long[] value, or null + */ + public long[] getLongArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (long[])o; + } catch (ClassCastException e) { + typeWarning(key, o, "long[]", e); + return null; + } + } + /** * Returns the value associated with the given key, or null if * no mapping of the desired type exists for the given key or a null diff --git a/src/api-impl/android/os/Binder.java b/src/api-impl/android/os/Binder.java index 5475f69f..2450a29a 100644 --- a/src/api-impl/android/os/Binder.java +++ b/src/api-impl/android/os/Binder.java @@ -15,4 +15,8 @@ public class Binder implements IBinder { @Override public boolean transact(int code, Parcel data, Parcel reply, int flags) { return false; } + + public static int getCallingUid() { return 0; } + + public static int getCallingPid() { return 0; } } diff --git a/src/api-impl/android/os/Bundle.java b/src/api-impl/android/os/Bundle.java index 8ea63746..0f126bea 100644 --- a/src/api-impl/android/os/Bundle.java +++ b/src/api-impl/android/os/Bundle.java @@ -488,17 +488,6 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { mMap.put(key, value); } - /** - * Inserts a long array value into the mapping of this Bundle, replacing - * any existing value for the given key. Either key or value may be null. - * - * @param key a String, or null - * @param value a long array object, or null - */ - public void putLongArray(String key, long[] value) { - mMap.put(key, value); - } - /** * Inserts a float array value into the mapping of this Bundle, replacing * any existing value for the given key. Either key or value may be null. @@ -1042,27 +1031,6 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { } } - /** - * Returns the value associated with the given key, or null if - * no mapping of the desired type exists for the given key or a null - * value is explicitly associated with the key. - * - * @param key a String, or null - * @return a long[] value, or null - */ - public long[] getLongArray(String key) { - Object o = mMap.get(key); - if (o == null) { - return null; - } - try { - return (long[])o; - } catch (ClassCastException e) { - typeWarning(key, o, "long[]", e); - return null; - } - } - /** * Returns the value associated with the given key, or null if * no mapping of the desired type exists for the given key or a null diff --git a/src/api-impl/android/os/StrictMode.java b/src/api-impl/android/os/StrictMode.java index f69f400d..3734bc40 100644 --- a/src/api-impl/android/os/StrictMode.java +++ b/src/api-impl/android/os/StrictMode.java @@ -73,6 +73,9 @@ public final class StrictMode { public Builder penaltyLog() { return this; } + public Builder penaltyDeath() { + return this; + } public ThreadPolicy build() { return new ThreadPolicy(mask, listener, executor); } diff --git a/src/api-impl/android/service/media/MediaBrowserService.java b/src/api-impl/android/service/media/MediaBrowserService.java new file mode 100644 index 00000000..e386513f --- /dev/null +++ b/src/api-impl/android/service/media/MediaBrowserService.java @@ -0,0 +1,19 @@ +package android.service.media; + +import android.app.Service; +import android.content.Intent; +import android.media.session.MediaSession; +import android.os.IBinder; + +public class MediaBrowserService extends Service { + + @Override + public IBinder onBind(Intent intent) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onBind'"); + } + + public void setSessionToken(MediaSession.Token token) {} + + public void notifyChildrenChanged(String parentId) {} +} diff --git a/src/api-impl/android/view/InputDevice.java b/src/api-impl/android/view/InputDevice.java index be1731b6..f1cd5b69 100644 --- a/src/api-impl/android/view/InputDevice.java +++ b/src/api-impl/android/view/InputDevice.java @@ -75,6 +75,10 @@ public class InputDevice { return true; } + public MotionRange getMotionRange(int axis, int source) { + return new MotionRange(axis); + } + public class MotionRange { int axis; diff --git a/src/api-impl/android/view/MenuItem.java b/src/api-impl/android/view/MenuItem.java index fa0f625c..0044fd1e 100644 --- a/src/api-impl/android/view/MenuItem.java +++ b/src/api-impl/android/view/MenuItem.java @@ -8,7 +8,10 @@ public interface MenuItem { public boolean onMenuItemClick(MenuItem item); } - public interface OnActionExpandListener {} + public interface OnActionExpandListener { + public boolean onMenuItemActionExpand(MenuItem item); + public boolean onMenuItemActionCollapse(MenuItem item); + } public MenuItem setIcon(int iconRes); @@ -69,4 +72,6 @@ public interface MenuItem { public CharSequence getTitle(); public MenuItem setNumericShortcut(char numericChar); + + public boolean expandActionView(); } diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java index 4e21938b..690fe402 100644 --- a/src/api-impl/android/view/ViewGroup.java +++ b/src/api-impl/android/view/ViewGroup.java @@ -424,6 +424,8 @@ public class ViewGroup extends View implements ViewParent, ViewManager { public boolean getClipToPadding() { return false; } + public boolean isTransitionGroup() { return false; } + public static class LayoutParams { public static final int FILL_PARENT = -1; public static final int MATCH_PARENT = -1; @@ -583,4 +585,28 @@ public class ViewGroup extends View implements ViewParent, ViewManager { public void onChildViewAdded(View parent, View child); public void onChildViewRemoved(View parent, View child); } + + @Override + public void onNestedScrollAccepted(View child, View target, int nestedScrollAxes) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onNestedScrollAccepted'"); + } + + @Override + public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onNestedPreScroll'"); + } + + @Override + public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onNestedScroll'"); + } + + @Override + public void onStopNestedScroll(View target) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onStopNestedScroll'"); + } } diff --git a/src/api-impl/android/view/ViewParent.java b/src/api-impl/android/view/ViewParent.java index 5b6f17fb..79e8c9a6 100644 --- a/src/api-impl/android/view/ViewParent.java +++ b/src/api-impl/android/view/ViewParent.java @@ -12,4 +12,12 @@ public interface ViewParent { public boolean onNestedPreFling(View target, float velocityX, float velocityY); public boolean onNestedFling(View target, float velocityX, float velocityY, boolean consumed); + + public void onNestedScrollAccepted(View child, View target, int nestedScrollAxes); + + public void onNestedPreScroll(View target, int dx, int dy, int[] consumed); + + public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed); + + public void onStopNestedScroll(View target); } diff --git a/src/api-impl/android/view/WindowManagerImpl.java b/src/api-impl/android/view/WindowManagerImpl.java index e11583e5..414745ca 100644 --- a/src/api-impl/android/view/WindowManagerImpl.java +++ b/src/api-impl/android/view/WindowManagerImpl.java @@ -39,6 +39,30 @@ public class WindowManagerImpl implements WindowManager, ViewManager { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'onNestedFling'"); } + + @Override + public void onNestedScrollAccepted(View child, View target, int nestedScrollAxes) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onNestedScrollAccepted'"); + } + + @Override + public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onNestedPreScroll'"); + } + + @Override + public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onNestedScroll'"); + } + + @Override + public void onStopNestedScroll(View target) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'onStopNestedScroll'"); + } } public android.view.Display getDefaultDisplay() { diff --git a/src/api-impl/android/webkit/URLUtil.java b/src/api-impl/android/webkit/URLUtil.java index 9d56b9ca..d5a4fffa 100644 --- a/src/api-impl/android/webkit/URLUtil.java +++ b/src/api-impl/android/webkit/URLUtil.java @@ -17,4 +17,8 @@ public class URLUtil { && (url.length() > 7) && url.substring(0, 8).equalsIgnoreCase("https://"); } + + public static boolean isContentUrl(String url) { + return url.startsWith("content://"); + } } diff --git a/src/api-impl/android/webkit/WebSettings.java b/src/api-impl/android/webkit/WebSettings.java index 3a762764..776a34ed 100644 --- a/src/api-impl/android/webkit/WebSettings.java +++ b/src/api-impl/android/webkit/WebSettings.java @@ -52,4 +52,6 @@ public class WebSettings { public void setRenderPriority(RenderPriority priority) {} public void setBlockNetworkLoads(boolean block) {} + + public void setMixedContentMode(int mode) {} } diff --git a/src/api-impl/android/webkit/WebView.java b/src/api-impl/android/webkit/WebView.java index 633629e4..0d611ceb 100644 --- a/src/api-impl/android/webkit/WebView.java +++ b/src/api-impl/android/webkit/WebView.java @@ -4,9 +4,9 @@ import android.content.Context; import android.content.res.AssetManager; import android.util.AttributeSet; import android.util.Base64; -import android.view.View; +import android.view.ViewGroup; -public class WebView extends View { +public class WebView extends ViewGroup { private WebViewClient webViewClient; diff --git a/src/api-impl/android/widget/AbsSeekBar.java b/src/api-impl/android/widget/AbsSeekBar.java index 2b7eb561..9ccab013 100644 --- a/src/api-impl/android/widget/AbsSeekBar.java +++ b/src/api-impl/android/widget/AbsSeekBar.java @@ -1,7 +1,6 @@ package android.widget; import android.content.Context; -import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; @@ -16,16 +15,12 @@ public abstract class AbsSeekBar extends ProgressBar { } public Drawable getThumb() { - return new Drawable() { - @Override - public void draw(Canvas canvas) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'draw'"); - } - }; + return new Drawable(); } public void setKeyProgressIncrement(int keyProgressIncrement) {} public int getKeyProgressIncrement() {return 0;} + + public int getThumbOffset() {return 0;} } diff --git a/src/api-impl/android/widget/ImageView.java b/src/api-impl/android/widget/ImageView.java index c4543002..72c562d2 100644 --- a/src/api-impl/android/widget/ImageView.java +++ b/src/api-impl/android/widget/ImageView.java @@ -189,6 +189,8 @@ public class ImageView extends View { public void setColorFilter(int color) {} + public void setColorFilter(ColorFilter cf) {} + @Override protected native long native_constructor(Context context, AttributeSet attrs); protected native void native_setDrawable(long widget, long paintable); diff --git a/src/api-impl/android/widget/PopupMenu.java b/src/api-impl/android/widget/PopupMenu.java index 078ed7c5..aa197e8b 100644 --- a/src/api-impl/android/widget/PopupMenu.java +++ b/src/api-impl/android/widget/PopupMenu.java @@ -545,6 +545,12 @@ public class PopupMenu { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'setNumericShortcut'"); } + + @Override + public boolean expandActionView() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'expandActionView'"); + } } } diff --git a/src/api-impl/android/widget/PopupWindow.java b/src/api-impl/android/widget/PopupWindow.java index 9d074848..6310a0bf 100644 --- a/src/api-impl/android/widget/PopupWindow.java +++ b/src/api-impl/android/widget/PopupWindow.java @@ -101,4 +101,6 @@ public class PopupWindow { public void setAnimationStyle(int animationStyle) {} public void setTouchModal(boolean touchModal) {} + + public void setElevation(float elevation) {} } diff --git a/src/api-impl/android/widget/ProgressBar.java b/src/api-impl/android/widget/ProgressBar.java index c2653e5c..9b7931ee 100644 --- a/src/api-impl/android/widget/ProgressBar.java +++ b/src/api-impl/android/widget/ProgressBar.java @@ -111,4 +111,8 @@ public class ProgressBar extends View { public void incrementProgressBy(int diff) { setProgress(progress + diff); } + + public int getSecondaryProgress() { + return 0; + } } diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java index f2b8b79a..08e6d72b 100644 --- a/src/api-impl/android/widget/TextView.java +++ b/src/api-impl/android/widget/TextView.java @@ -386,4 +386,6 @@ public class TextView extends View { public int getTotalPaddingLeft() {return 0;} public int getTotalPaddingTop() {return 0;} + + public int getImeOptions() {return 0;} } diff --git a/src/api-impl/com/android/org/conscrypt/OpenSSLSocketImpl.java b/src/api-impl/com/android/org/conscrypt/OpenSSLSocketImpl.java index 195f1d90..f4b8d041 100644 --- a/src/api-impl/com/android/org/conscrypt/OpenSSLSocketImpl.java +++ b/src/api-impl/com/android/org/conscrypt/OpenSSLSocketImpl.java @@ -4,6 +4,8 @@ import javax.net.ssl.SSLSocket; public abstract class OpenSSLSocketImpl extends SSLSocket { + public OpenSSLSocketImpl(SSLParametersImpl sslParameters) {} + public abstract void setUseSessionTickets(boolean useSessionTickets); public abstract void setHostname(String hostName); diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index 4bdef1f0..e475f959 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -70,6 +70,7 @@ srcs = [ 'android/bluetooth/BluetoothProfile.java', 'android/bluetooth/le/ScanCallback.java', 'android/content/ActivityNotFoundException.java', + 'android/content/AsyncQueryHandler.java', 'android/content/BroadcastReceiver.java', 'android/content/ClipboardManager.java', 'android/content/ClipData.java', @@ -197,6 +198,7 @@ srcs = [ 'android/graphics/CornerPathEffect.java', 'android/graphics/DashPathEffect.java', 'android/graphics/GskCanvas.java', + 'android/graphics/LightingColorFilter.java', 'android/graphics/LinearGradient.java', 'android/graphics/Matrix.java', 'android/graphics/Outline.java', @@ -269,6 +271,7 @@ srcs = [ 'android/media/Ringtone.java', 'android/media/RingtoneManager.java', 'android/media/SoundPool.java', + 'android/media/audiofx/AudioEffect.java', 'android/media/projection/MediaProjectionManager.java', 'android/media/session/MediaController.java', 'android/media/session/MediaSession.java', @@ -351,6 +354,7 @@ srcs = [ 'android/provider/CalendarContract.java', 'android/provider/ContactsContract.java', 'android/provider/Settings.java', + 'android/service/media/MediaBrowserService.java', 'android/telecom/ConnectionService.java', 'android/telecom/TelecomManager.java', 'android/telephony/CellLocation.java',