diff options
Diffstat (limited to 'core/java/android/webkit')
-rw-r--r-- | core/java/android/webkit/WebSettings.java | 6 | ||||
-rw-r--r-- | core/java/android/webkit/WebView.java | 116 | ||||
-rw-r--r-- | core/java/android/webkit/WebViewCore.java | 9 | ||||
-rw-r--r-- | core/java/android/webkit/gears/GearsPluginSettings.java | 95 | ||||
-rw-r--r-- | core/java/android/webkit/gears/HtmlDialogAndroid.java | 174 | ||||
-rw-r--r-- | core/java/android/webkit/gears/IGearsDialogService.java | 107 |
6 files changed, 103 insertions, 404 deletions
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java index 5c470cf..4e2b2ab 100644 --- a/core/java/android/webkit/WebSettings.java +++ b/core/java/android/webkit/WebSettings.java @@ -20,6 +20,8 @@ import android.content.Context; import android.os.Build; import android.os.Handler; import android.os.Message; +import android.provider.Checkin; + import java.lang.SecurityException; import android.content.pm.PackageManager; @@ -408,6 +410,10 @@ public class WebSettings { * @see WebSettings.TextSize */ public synchronized void setTextSize(TextSize t) { + if (WebView.mLogEvent && mTextSize != t ) { + Checkin.updateStats(mContext.getContentResolver(), + Checkin.Stats.Tag.BROWSER_TEXT_SIZE_CHANGE, 1, 0.0); + } mTextSize = t; postSync(); } diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 4d9a8fb..c59a5fc 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -38,11 +38,13 @@ import android.os.Handler; import android.os.Message; import android.os.ServiceManager; import android.os.SystemClock; +import android.provider.Checkin; import android.text.IClipboard; import android.text.Selection; import android.text.Spannable; import android.util.AttributeSet; import android.util.Config; +import android.util.EventLog; import android.util.Log; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; @@ -450,6 +452,13 @@ public class WebView extends AbsoluteLayout // Used to match key downs and key ups private boolean mGotKeyDown; + /* package */ static boolean mLogEvent = true; + private static final int EVENT_LOG_ZOOM_LEVEL_CHANGE = 70101; + private static final int EVENT_LOG_DOUBLE_TAP_DURATION = 70102; + + // for event log + private long mLastTouchUpTime = 0; + /** * URI scheme for telephone number */ @@ -556,7 +565,11 @@ public class WebView extends AbsoluteLayout private ZoomRingController.OnZoomListener mZoomListener = new ZoomRingController.OnZoomListener() { - + + private float mClockwiseBound; + private float mCounterClockwiseBound; + private float mStartScale; + public void onCenter(int x, int y) { // Don't translate when the control is invoked, hence we do nothing // in this callback @@ -564,6 +577,10 @@ public class WebView extends AbsoluteLayout public void onBeginPan() { setZoomOverviewVisible(false); + if (mLogEvent) { + Checkin.updateStats(mContext.getContentResolver(), + Checkin.Stats.Tag.BROWSER_ZOOM_RING_DRAG, 1, 0.0); + } } public boolean onPan(int deltaX, int deltaY) { @@ -576,12 +593,25 @@ public class WebView extends AbsoluteLayout public void onVisibilityChanged(boolean visible) { if (visible) { switchOutDrawHistory(); + if (mMaxZoomScale - 1 > ZOOM_RING_STEPS * 0.01f) { + mClockwiseBound = (float) (2 * Math.PI - MAX_ZOOM_RING_ANGLE); + } else { + mClockwiseBound = (float) (2 * Math.PI); + } + mZoomRingController.setThumbClockwiseBound(mClockwiseBound); + if (1 - mMinZoomScale > ZOOM_RING_STEPS * 0.01f) { + mCounterClockwiseBound = MAX_ZOOM_RING_ANGLE; + } else { + mCounterClockwiseBound = 0; + } + mZoomRingController + .setThumbCounterclockwiseBound(mCounterClockwiseBound); float angle = 0f; - if (mActualScale > 1) { + if (mActualScale > 1 && mClockwiseBound < (float) (2 * Math.PI)) { angle = -(float) Math.round(ZOOM_RING_STEPS * (mActualScale - 1) / (mMaxZoomScale - 1)) / ZOOM_RING_STEPS; - } else if (mActualScale < 1) { + } else if (mActualScale < 1 && mCounterClockwiseBound > 0) { angle = (float) Math.round(ZOOM_RING_STEPS * (1 - mActualScale) / (1 - mMinZoomScale)) / ZOOM_RING_STEPS; @@ -590,16 +620,26 @@ public class WebView extends AbsoluteLayout // Show the zoom overview tab on the ring setZoomOverviewVisible(true); + if (mLogEvent) { + Checkin.updateStats(mContext.getContentResolver(), + Checkin.Stats.Tag.BROWSER_ZOOM_RING, 1, 0.0); + } } } public void onBeginDrag() { mPreviewZoomOnly = true; + mStartScale = mActualScale; setZoomOverviewVisible(false); } public void onEndDrag() { mPreviewZoomOnly = false; + if (mLogEvent) { + EventLog.writeEvent(EVENT_LOG_ZOOM_LEVEL_CHANGE, + (int) mStartScale * 100, (int) mActualScale * 100, + System.currentTimeMillis()); + } setNewZoomScale(mActualScale, true); } @@ -616,21 +656,21 @@ public class WebView extends AbsoluteLayout mZoomCenterY = (float) centerY; float scale = 1.0f; - if (curAngle > (float) Math.PI) - curAngle -= (float) 2 * Math.PI; - if (curAngle > 0) { - if (curAngle >= MAX_ZOOM_RING_ANGLE) { + // curAngle is [0, 2 * Math.PI) + if (curAngle < (float) Math.PI) { + if (curAngle >= mCounterClockwiseBound) { scale = mMinZoomScale; } else { scale = 1 - (float) Math.round(curAngle / ZOOM_RING_ANGLE_UNIT) / ZOOM_RING_STEPS * (1 - mMinZoomScale); } - } else if (curAngle < 0) { - if (curAngle <= -MAX_ZOOM_RING_ANGLE) { + } else { + if (curAngle <= mClockwiseBound) { scale = mMaxZoomScale; } else { - scale = 1 + (float) Math.round(-curAngle + scale = 1 + (float) Math.round( + ((float) 2 * Math.PI - curAngle) / ZOOM_RING_ANGLE_UNIT) / ZOOM_RING_STEPS * (mMaxZoomScale - 1); } @@ -687,12 +727,11 @@ public class WebView extends AbsoluteLayout mScroller = new Scroller(context); mZoomRingController = new ZoomRingController(context, this); mZoomRingController.setResetThumbAutomatically(false); - mZoomRingController.setThumbClockwiseBound( - (float) (2 * Math.PI - MAX_ZOOM_RING_ANGLE)); - mZoomRingController.setThumbCounterclockwiseBound(MAX_ZOOM_RING_ANGLE); mZoomRingController.setCallback(mZoomListener); mZoomRingController.setZoomRingTrack( com.android.internal.R.drawable.zoom_ring_track_absolute); + mZoomRingController.setPannerAcceleration(160); + mZoomRingController.setPannerStartAcceleratingDuration(700); createZoomRingOverviewTab(); } @@ -730,6 +769,10 @@ public class WebView extends AbsoluteLayout public void onClick(View v) { // Hide the zoom ring mZoomRingController.setVisible(false); + if (mLogEvent) { + Checkin.updateStats(mContext.getContentResolver(), + Checkin.Stats.Tag.BROWSER_ZOOM_OVERVIEW, 1, 0.0); + } zoomScrollOut(); }}); @@ -3468,7 +3511,7 @@ public class WebView extends AbsoluteLayout // update mMinZoomScale if (mMinContentWidth > MAX_FLOAT_CONTENT_WIDTH) { boolean atMin = Math.abs(mActualScale - mMinZoomScale) < 0.01f; - mMinZoomScale = (float) getViewWidth() / mMinContentWidth; + mMinZoomScale = (float) getViewWidth() / mContentWidth; if (atMin) { // if the WebView was at the minimum zoom scale, keep it. e,g., // the WebView was at the minimum zoom scale at the portrait @@ -3535,7 +3578,8 @@ public class WebView extends AbsoluteLayout return false; } - if (mShowZoomRingTutorial && mMinZoomScale < mMaxZoomScale) { + if (mShowZoomRingTutorial && getSettings().supportZoom() + && (mMaxZoomScale - mMinZoomScale) > ZOOM_RING_STEPS * 0.01f) { ZoomRingController.showZoomTutorialOnce(mContext); mShowZoomRingTutorial = false; mPrivateHandler.sendMessageDelayed(mPrivateHandler @@ -3616,10 +3660,18 @@ public class WebView extends AbsoluteLayout mPrivateHandler.removeMessages(RELEASE_SINGLE_TAP); mZoomRingController.setVisible(true); mInZoomTapDragMode = true; + if (mLogEvent) { + EventLog.writeEvent(EVENT_LOG_DOUBLE_TAP_DURATION, + (eventTime - mLastTouchUpTime), eventTime); + } return mZoomRingController.handleDoubleTapEvent(ev); } else { mTouchMode = TOUCH_INIT_MODE; mPreventDrag = mForwardTouchEvents; + if (mLogEvent && eventTime - mLastTouchUpTime < 1000) { + EventLog.writeEvent(EVENT_LOG_DOUBLE_TAP_DURATION, + (eventTime - mLastTouchUpTime), eventTime); + } } // don't trigger the link if zoom ring is visible if (mTouchMode == TOUCH_INIT_MODE @@ -3783,17 +3835,23 @@ public class WebView extends AbsoluteLayout break; } case MotionEvent.ACTION_UP: { + mLastTouchUpTime = eventTime; switch (mTouchMode) { case TOUCH_INIT_MODE: // tap if (mZoomRingController.isVisible()) { - // don't trigger the link if zoom ring is visible + // don't trigger the link if zoom ring is visible, + // but still allow the double tap + mPrivateHandler.sendMessageDelayed(mPrivateHandler + .obtainMessage(RELEASE_SINGLE_TAP, + new Boolean(false)), + DOUBLE_TAP_TIMEOUT); break; } mPrivateHandler.removeMessages(SWITCH_TO_SHORTPRESS); - if (getSettings().supportZoom() - && (mMinZoomScale < mMaxZoomScale)) { + if (getSettings().supportZoom()) { mPrivateHandler.sendMessageDelayed(mPrivateHandler - .obtainMessage(RELEASE_SINGLE_TAP), + .obtainMessage(RELEASE_SINGLE_TAP, + new Boolean(true)), DOUBLE_TAP_TIMEOUT); } else { // do short press now @@ -3841,7 +3899,8 @@ public class WebView extends AbsoluteLayout // as tap instead of short press. mTouchMode = TOUCH_INIT_MODE; mPrivateHandler.sendMessageDelayed(mPrivateHandler - .obtainMessage(RELEASE_SINGLE_TAP), + .obtainMessage(RELEASE_SINGLE_TAP, + new Boolean(true)), DOUBLE_TAP_TIMEOUT); } else { mTouchMode = TOUCH_DONE_MODE; @@ -3963,6 +4022,7 @@ public class WebView extends AbsoluteLayout + " time=" + time + " mLastFocusTime=" + mLastFocusTime); } + if (isInTouchMode()) requestFocusFromTouch(); return false; // let common code in onKeyDown at it } if (ev.getAction() == MotionEvent.ACTION_UP) { @@ -4399,7 +4459,12 @@ public class WebView extends AbsoluteLayout int contentX = viewToContent((int) mLastTouchX + mScrollX); int contentY = viewToContent((int) mLastTouchY + mScrollY); int contentSize = ViewConfiguration.get(getContext()).getScaledTouchSlop(); - nativeMotionUp(contentX, contentY, contentSize, true); + if (nativeMotionUp(contentX, contentY, contentSize, true)) { + if (mLogEvent) { + Checkin.updateStats(mContext.getContentResolver(), + Checkin.Stats.Tag.BROWSER_SNAP_CENTER, 1, 0.0); + } + } if (nativeUpdateFocusNode() && !mFocusNode.mIsTextField && !mFocusNode.mIsTextArea) { playSoundEffect(SoundEffectConstants.CLICK); @@ -4619,7 +4684,9 @@ public class WebView extends AbsoluteLayout } case RELEASE_SINGLE_TAP: { mTouchMode = TOUCH_DONE_MODE; - doShortPress(); + if ((Boolean)msg.obj) { + doShortPress(); + } break; } case SWITCH_TO_ENTER: @@ -4671,7 +4738,7 @@ public class WebView extends AbsoluteLayout mMinContentWidth = msg.arg1; if (mMinContentWidth > MAX_FLOAT_CONTENT_WIDTH) { mMinZoomScale = (float) getViewWidth() - / mMinContentWidth; + / draw.mWidthHeight.x; } // We update the layout (i.e. request a layout from the // view system) if the last view size that we sent to @@ -5236,7 +5303,8 @@ public class WebView extends AbsoluteLayout private native Rect nativeGetNavBounds(); private native void nativeInstrumentReport(); private native void nativeMarkNodeInvalid(int node); - private native void nativeMotionUp(int x, int y, int slop, boolean isClick); + // return true if the page has been scrolled + private native boolean nativeMotionUp(int x, int y, int slop, boolean isClick); // returns false if it handled the key private native boolean nativeMoveFocus(int keyCode, int count, boolean noScroll); diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 45113ab..a7261c5 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1197,6 +1197,7 @@ final class WebViewCore { Log.w(LOGTAG, "skip viewSizeChanged as w is 0"); return; } + // negative scale indicate that WebCore should reuse the current scale float scale = (float) viewWidth / w; if (mSettings.getUseWideViewPort() && (w < mViewportWidth || mViewportWidth == -1)) { @@ -1224,7 +1225,7 @@ final class WebViewCore { // keep the same width and screen width so that there is // no reflow when zoom-out width = minContentWidth; - screenWidth = Math.min(screenWidth, viewWidth); + screenWidth = Math.min(screenWidth, Math.abs(viewWidth)); } else { width = Math.max(w, minContentWidth); } @@ -1536,11 +1537,11 @@ final class WebViewCore { // white space in the GMail which uses WebView for message view. if (mWebView != null && mWebView.mHeightCanMeasure) { mWebView.mLastHeightSent = 0; - // Send a negative scale to indicate that WebCore should reuse the - // current scale + // Send a negative screen width to indicate that WebCore should + // reuse the current scale mEventHub.sendMessage(Message.obtain(null, EventHub.VIEW_SIZE_CHANGED, mWebView.mLastWidthSent, - mWebView.mLastHeightSent, new Integer(-1))); + mWebView.mLastHeightSent, -mWebView.mLastWidthSent)); } mBrowserFrame.didFirstLayout(); diff --git a/core/java/android/webkit/gears/GearsPluginSettings.java b/core/java/android/webkit/gears/GearsPluginSettings.java deleted file mode 100644 index d36d3fb..0000000 --- a/core/java/android/webkit/gears/GearsPluginSettings.java +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2008 The Android Open Source Project -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// 3. Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package android.webkit.gears; - -import android.content.ComponentName; -import android.content.Context; -import android.content.ServiceConnection; -import android.os.IBinder; -import android.util.Log; -import android.webkit.Plugin; -import android.webkit.Plugin.PreferencesClickHandler; - -/** - * Simple bridge class intercepting the click in the - * browser plugin list and calling the Gears settings - * dialog. - */ -public class GearsPluginSettings { - - private static final String TAG = "Gears-J-GearsPluginSettings"; - private Context context; - - public GearsPluginSettings(Plugin plugin) { - plugin.setClickHandler(new ClickHandler()); - } - - /** - * We do not need to call the dialog synchronously here (doing so - * actually cause a lot of problems as the main message loop is also - * blocked), which is why we simply call it via a thread. - */ - private class ClickHandler implements PreferencesClickHandler { - public void handleClickEvent(Context aContext) { - context = aContext; - Thread startService = new Thread(new StartService()); - startService.run(); - } - } - - private static native void runSettingsDialog(Context c); - - /** - * StartService is the runnable we use to open the dialog. - * We bind the service to serviceConnection; upon - * onServiceConnected the dialog will be called from the - * native side using the runSettingsDialog method. - */ - private class StartService implements Runnable { - public void run() { - HtmlDialogAndroid.bindToService(context, serviceConnection); - } - } - - /** - * ServiceConnection instance. - * onServiceConnected is called upon connection with the service; - * we can then safely open the dialog. - */ - private ServiceConnection serviceConnection = new ServiceConnection() { - public void onServiceConnected(ComponentName className, IBinder service) { - IGearsDialogService gearsDialogService = - IGearsDialogService.Stub.asInterface(service); - HtmlDialogAndroid.setGearsDialogService(gearsDialogService); - runSettingsDialog(context); - context.unbindService(serviceConnection); - HtmlDialogAndroid.setGearsDialogService(null); - } - public void onServiceDisconnected(ComponentName className) { - HtmlDialogAndroid.setGearsDialogService(null); - } - }; -} diff --git a/core/java/android/webkit/gears/HtmlDialogAndroid.java b/core/java/android/webkit/gears/HtmlDialogAndroid.java deleted file mode 100644 index 6209ab9..0000000 --- a/core/java/android/webkit/gears/HtmlDialogAndroid.java +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2008 The Android Open Source Project -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// 3. Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package android.webkit.gears; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.IBinder; -import android.os.RemoteException; -import android.util.Log; -import android.webkit.CacheManager; - -import java.io.FileInputStream; -import java.io.IOException; - -/** - * Utility class to call a modal HTML dialog on Android - */ -public class HtmlDialogAndroid { - - private static final String TAG = "Gears-J-HtmlDialog"; - private static final String DIALOG_PACKAGE = "com.android.browser"; - private static final String DIALOG_SERVICE = DIALOG_PACKAGE - + ".GearsDialogService"; - private static final String DIALOG_INTERFACE = DIALOG_PACKAGE - + ".IGearsDialogService"; - - private static IGearsDialogService gearsDialogService; - - public static void setGearsDialogService(IGearsDialogService service) { - gearsDialogService = service; - } - - /** - * Bind to the GearsDialogService. - */ - public static boolean bindToService(Context context, - ServiceConnection serviceConnection) { - Intent dialogIntent = new Intent(); - dialogIntent.setClassName(DIALOG_PACKAGE, DIALOG_SERVICE); - dialogIntent.setAction(DIALOG_INTERFACE); - return context.bindService(dialogIntent, serviceConnection, - Context.BIND_AUTO_CREATE); - } - - /** - * Bind to the GearsDialogService synchronously. - * The service is started using our own defaultServiceConnection - * handler, and we wait until the handler notifies us. - */ - public void synchronousBindToService(Context context) { - try { - if (bindToService(context, defaultServiceConnection)) { - if (gearsDialogService == null) { - synchronized(defaultServiceConnection) { - defaultServiceConnection.wait(3000); // timeout after 3s - } - } - } - } catch (InterruptedException e) { - Log.e(TAG, "exception: " + e); - } - } - - /** - * Read the HTML content from the disk - */ - public String readHTML(String filePath) { - FileInputStream inputStream = null; - String content = ""; - try { - inputStream = new FileInputStream(filePath); - StringBuffer out = new StringBuffer(); - byte[] buffer = new byte[4096]; - for (int n; (n = inputStream.read(buffer)) != -1;) { - out.append(new String(buffer, 0, n)); - } - content = out.toString(); - } catch (IOException e) { - Log.e(TAG, "exception: " + e); - } finally { - if (inputStream != null) { - try { - inputStream.close(); - } catch (IOException e) { - Log.e(TAG, "exception: " + e); - } - } - } - return content; - } - - /** - * Open an HTML dialog synchronously and waits for its completion. - * The dialog is accessed through the GearsDialogService provided by - * the Android Browser. - * We can be called either directly, and then gearsDialogService will - * not be set and we will bind to the service synchronously, and unbind - * after calling the service, or called indirectly via GearsPluginSettings. - * In the latter case, GearsPluginSettings does the binding/unbinding. - */ - public String showDialog(Context context, String htmlFilePath, - String arguments) { - - CacheManager.endCacheTransaction(); - - String ret = null; - boolean synchronousCall = false; - if (gearsDialogService == null) { - synchronousCall = true; - synchronousBindToService(context); - } - - try { - if (gearsDialogService != null) { - String htmlContent = readHTML(htmlFilePath); - if (htmlContent.length() > 0) { - ret = gearsDialogService.showDialog(htmlContent, arguments, - !synchronousCall); - } - } else { - Log.e(TAG, "Could not connect to the GearsDialogService!"); - } - if (synchronousCall) { - context.unbindService(defaultServiceConnection); - gearsDialogService = null; - } - } catch (RemoteException e) { - Log.e(TAG, "remote exception: " + e); - gearsDialogService = null; - } - - CacheManager.startCacheTransaction(); - - return ret; - } - - private ServiceConnection defaultServiceConnection = - new ServiceConnection() { - public void onServiceConnected(ComponentName className, IBinder service) { - synchronized (defaultServiceConnection) { - gearsDialogService = IGearsDialogService.Stub.asInterface(service); - defaultServiceConnection.notify(); - } - } - public void onServiceDisconnected(ComponentName className) { - gearsDialogService = null; - } - }; -} diff --git a/core/java/android/webkit/gears/IGearsDialogService.java b/core/java/android/webkit/gears/IGearsDialogService.java deleted file mode 100644 index 82a3bd9..0000000 --- a/core/java/android/webkit/gears/IGearsDialogService.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * This file is auto-generated. DO NOT MODIFY. - * Original file: android.webkit.gears/IGearsDialogService.aidl - */ -package android.webkit.gears; -import java.lang.String; -import android.os.RemoteException; -import android.os.IBinder; -import android.os.IInterface; -import android.os.Binder; -import android.os.Parcel; -public interface IGearsDialogService extends android.os.IInterface -{ -/** Local-side IPC implementation stub class. */ -public static abstract class Stub extends android.os.Binder implements android.webkit.gears.IGearsDialogService -{ -private static final java.lang.String DESCRIPTOR = "com.android.browser.IGearsDialogService"; -/** Construct the stub at attach it to the interface. */ -public Stub() -{ -this.attachInterface(this, DESCRIPTOR); -} -/** - * Cast an IBinder object into an IGearsDialogService interface, - * generating a proxy if needed. - */ -public static android.webkit.gears.IGearsDialogService asInterface(android.os.IBinder obj) -{ -if ((obj==null)) { -return null; -} -android.webkit.gears.IGearsDialogService in = (android.webkit.gears.IGearsDialogService)obj.queryLocalInterface(DESCRIPTOR); -if ((in!=null)) { -return in; -} -return new android.webkit.gears.IGearsDialogService.Stub.Proxy(obj); -} -public android.os.IBinder asBinder() -{ -return this; -} -public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException -{ -switch (code) -{ -case INTERFACE_TRANSACTION: -{ -reply.writeString(DESCRIPTOR); -return true; -} -case TRANSACTION_showDialog: -{ -data.enforceInterface(DESCRIPTOR); -java.lang.String _arg0; -_arg0 = data.readString(); -java.lang.String _arg1; -_arg1 = data.readString(); -boolean _arg2; -_arg2 = (0!=data.readInt()); -java.lang.String _result = this.showDialog(_arg0, _arg1, _arg2); -reply.writeNoException(); -reply.writeString(_result); -return true; -} -} -return super.onTransact(code, data, reply, flags); -} -private static class Proxy implements android.webkit.gears.IGearsDialogService -{ -private android.os.IBinder mRemote; -Proxy(android.os.IBinder remote) -{ -mRemote = remote; -} -public android.os.IBinder asBinder() -{ -return mRemote; -} -public java.lang.String getInterfaceDescriptor() -{ -return DESCRIPTOR; -} -public java.lang.String showDialog(java.lang.String htmlContent, java.lang.String dialogArguments, boolean inSettings) throws android.os.RemoteException -{ -android.os.Parcel _data = android.os.Parcel.obtain(); -android.os.Parcel _reply = android.os.Parcel.obtain(); -java.lang.String _result; -try { -_data.writeInterfaceToken(DESCRIPTOR); -_data.writeString(htmlContent); -_data.writeString(dialogArguments); -_data.writeInt(((inSettings)?(1):(0))); -mRemote.transact(Stub.TRANSACTION_showDialog, _data, _reply, 0); -_reply.readException(); -_result = _reply.readString(); -} -finally { -_reply.recycle(); -_data.recycle(); -} -return _result; -} -} -static final int TRANSACTION_showDialog = (IBinder.FIRST_CALL_TRANSACTION + 0); -} -public java.lang.String showDialog(java.lang.String htmlContent, java.lang.String dialogArguments, boolean inSettings) throws android.os.RemoteException; -} |