core/java/android/os/IPowerManager.aidl \
core/java/android/os/IRemoteCallback.aidl \
core/java/android/os/IVibratorService.aidl \
+ core/java/android/service/urlrenderer/IUrlRendererService.aidl \
+ core/java/android/service/urlrenderer/IUrlRendererCallback.aidl \
core/java/android/service/wallpaper/IWallpaperConnection.aidl \
core/java/android/service/wallpaper/IWallpaperEngine.aidl \
core/java/android/service/wallpaper/IWallpaperService.aidl \
--- /dev/null
+/*
+ * Copyright (c) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.urlrenderer;
+
+import android.os.ParcelFileDescriptor;
+
+/**
+ * {@hide}
+ */
+oneway interface IUrlRendererCallback {
+ void complete(String url, in ParcelFileDescriptor result);
+}
--- /dev/null
+/*
+ * Copyright (c) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.urlrenderer;
+
+import android.service.urlrenderer.IUrlRendererCallback;
+
+/**
+ * {@hide}
+ */
+interface IUrlRendererService {
+ void render(in List<String> urls, int width, int height,
+ IUrlRendererCallback cb);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.urlrenderer;
+
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+
+import java.util.List;
+
+/**
+ * TODO(phanna): Document this class.
+ * {@hide} while developing
+ */
+public final class UrlRenderer {
+ /**
+ * Interface for clients to receive the result of calls to
+ * {@link UrlRenderer#render}.
+ * {@hide} while developing
+ */
+ public interface Callback {
+ /**
+ * Calls to {@link render} will result in multiple invokations of this
+ * method for each url. A null result means that there was a server
+ * error or a problem rendering the url.
+ * @param url The url that has been rendered.
+ * @param result A ParcelFileDescriptor containing the encoded image
+ * data. The client is responsible for closing the stream
+ * to free resources. A null result indicates a failure
+ * to render.
+ */
+ public void complete(String url, ParcelFileDescriptor result);
+ }
+
+ private IUrlRendererService mService;
+
+ /**
+ * Create a new UrlRenderer to remotely render urls.
+ * @param service An IBinder service usually obtained through
+ * {@link ServiceConnection#onServiceConnected}
+ */
+ public UrlRenderer(IBinder service) {
+ mService = IUrlRendererService.Stub.asInterface(service);
+ }
+
+ private static class InternalCallback extends IUrlRendererCallback.Stub {
+ private final Callback mCallback;
+ InternalCallback(Callback cb) {
+ mCallback = cb;
+ }
+
+ public void complete(String url, ParcelFileDescriptor result) {
+ mCallback.complete(url, result);
+ }
+ }
+
+ /**
+ * Render the list of <var>urls</var> and invoke the <var>callback</var>
+ * for each result.
+ * @param urls A List of urls to render.
+ * @param width The desired width of the result.
+ * @param height The desired height of the result.
+ * @param callback An instance of {@link Callback} invoked for each url.
+ */
+ public void render(List<String> urls, int width, int height,
+ Callback callback) {
+ if (mService != null) {
+ try {
+ mService.render(urls, width, height,
+ new InternalCallback(callback));
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.urlrenderer;
+
+import android.annotation.SdkConstant;
+import android.annotation.SdkConstant.SdkConstantType;
+import android.app.Service;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+
+import java.util.List;
+
+/**
+ * TODO(phanna): Complete documentation.
+ * {@hide} while developing
+ */
+public abstract class UrlRendererService extends Service {
+ /**
+ * The {@link Intent} that must be declared as handled by the service.
+ */
+ @SdkConstant(SdkConstantType.SERVICE_ACTION)
+ public static final String SERVICE_INTERFACE =
+ "android.service.urlrenderer.UrlRendererService";
+
+ static final String TAG = "UrlRendererService";
+
+ private static class InternalCallback implements UrlRenderer.Callback {
+ private final IUrlRendererCallback mCallback;
+ InternalCallback(IUrlRendererCallback cb) {
+ mCallback = cb;
+ }
+
+ public void complete(String url, ParcelFileDescriptor result) {
+ try {
+ mCallback.complete(url, result);
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+
+ private final IUrlRendererService.Stub mBinderInterface =
+ new IUrlRendererService.Stub() {
+ public void render(List<String> urls, int width, int height,
+ IUrlRendererCallback cb) {
+ processRequest(urls, width, height,
+ new InternalCallback(cb));
+ }
+ };
+
+ /**
+ * Implement to return the implementation of the internal accessibility
+ * service interface. Subclasses should not override.
+ */
+ @Override
+ public final android.os.IBinder onBind(android.content.Intent intent) {
+ return mBinderInterface;
+ }
+
+ /**
+ * When all clients unbind from the service, stop the service. Subclasses
+ * should not override.
+ */
+ @Override
+ public final boolean onUnbind(android.content.Intent intent) {
+ stopSelf();
+ return false;
+ }
+
+ /**
+ * Subclasses implement this function to process the given urls. When each
+ * url is complete, the subclass must invoke the callback with the result.
+ * @param urls A list of urls to render at the given dimensions.
+ * @param width The desired width of the result.
+ * @param height The desired height of the result.
+ * @param cb The callback to invoke when each url is complete.
+ */
+ public abstract void processRequest(List<String> urls, int width,
+ int height, UrlRenderer.Callback cb);
+}