cherry-pick https://android-git.corp.google.com/g/#change,29843 from eclair-mr2
This will cherry-pick SHA1: 58def690a87b4aa2c01331c06b61e457198de0ea
This will workaround the following three bugs which are occuring because
the webview DB is getting corrupted:
http://b/issue?id=2338178http://b/issue?id=2278210http://b/issue?id=2405650
Here are the comments from the eclair-mr2 CL:
If openOrCreateDatabase() throws an exception, delete
the old db and re-do it. If it still fails, something
bad happens, like the directory may have the different
permission. Let it throw as WebView needs the db.
Fix http://b/issue?id=2179339
When the same page is loaded, updateRestoreState
will be false when we finish the first layout. As
we are still in the same page, we don't want to
update the current zoom/scroll. But in some cases,
like a site switch from mobile to full site and
keeps the same url, we do want to update the zoom
range as the viewport spec changed. Otherwise, user
can't zoom in the full site as the WebView thought
it is still a mobile non-scalable page.
- ContactHeaderWidget has cascading async queries, which weren't cancelled if a new query for a different phone number is started.
If the new query fails to find a corresponding contact, the old async queries from the previous number could end up setting the
contact name and photo to the wrong contact.
I tested this by calling
ContactHeaderWidget.bindFromPhoneNumber(number1);
ContactHeaderWidget.bindFromPhoneNumber(number2);
where number1 has a corresponding contact in the databse, and number2 doesn't. At the end of these 2 calls, the ContactHeaderWidget
would display the contact info for number1.
- also found a bug in AsyncQueryHandler.cancelOperation(), which doesn't reliably cancel the previous query. In ContactHeaderWidget's
case, we really depend on the cancelling to work. So work around this bug by resetting mAsyncQueryHandler when we need to do a
new lookup/query. When the old query result is passed back in the callback, discard the result if the QueryHandler is not the same
as mAsyncQueryHandler.
Change-Id: Ice79e77f787af03400e080cbd58162a91838181f
for the width/height on each touch down as orientation
can change.
This should fix the problem where we can't pinch on the
top right corner when device is in landscape mode.
Just scale the canvas instead of changing the real
scale factor during pinch.
Added over limit zoom feedback for pinch in the WebView.
Fix http://b/issue?id=2383539
Make sure the mZoomOverviewWidth is as least as
wide as the current (adjusted) view width.
This should fix the weird state Bart got in with
m.wikipedia.org.
give up the control. This should enable the View behind
it, like WebView, will always get the multi-pointer
events even when ZoomButtonsController is up.
The previous workaround for this race condition prevented glitches by postponing drawing the SlidingTab until the internal state was consistent.
Unfortunately, the InCallScreen seems to trigger this most of the time if the keyboard is open or the last application was in landscape mode.
Instead, we'll handle this separately in lockscreen.
When adjust scale for zoom overview, keep the state
of whether textWrapScale is matching mActualScale.
So if user pinch during loading, we won't reflow.
Fix http://b/issue?id=2370552
If mViewportWidth is 0, it means screen width. If
textwrapWidth is not same as view width, which means
that we are in the state triggered by pinch, always
send textwrapWidth as width to WebKit to keep the
same layout.
Fix http://b/issue?id=2375232
Use the common ScaleGestureDetector to detect the
multi-touch motion.
Check both supportZoom and getBuiltInZoomControls
to decide whether enable the multi-touch behavior.
This should the new pinch behavior only replace the
old +/-.
Fix http://b/issue?id=2363260
Only update textWrapScale if it is different. This
should fix the performance decrease caused by initial
multi-touch code.
Fix http://b/issue?id=2371694
Couple of tweak for multi-touch in WebView.
1. If we can't zoom, don't get in multitouch mode.
This avoid the logo in google.com looks fuzzy.
2. Reset mAnchor after sending VIEW_SIZE_CHANGED.
3. Don't call zoom when finishing multitouch unless
zoom is called before.
4. Change the width for nativeSetSize, which was modified
in the last check-in. The new logic should make both
msn.com and news.google.com looks correct.
5. Use the pressure instead of distance/time to filter
out the jitter just before lifting the finger.
Fix http://b/issue?id=2360032
Currently we just handle a simple pinch action. We
will wait for framework support for more complicated
gesture.
When pinch in the webview, zoom level will be changed
on the fly. But we won't re-wrap the text until user
action like double tap, rotate screen.
Double tap will re-layout the page and wrap the text
to the screen width. We try to keep the spot you
tapped at the same place on the screen after relayout.
If the block after relayout fully fit on the current
screen, we will center it for easy reading.
Fix http://b/issue?id=2360032
Move reset of A2DP suspend state from handleSinkStateChange() in BluetoothA2dpService to
BluetoothA2dp.ACTION_SINK_STATE_CHANGED intent receiver in AudioService.
Previous implementation could cause a false reset of suspend state if a new sink attempted to
connect while A2DP was suspended.
New implementation only resets A2DP suspend state when a new sink is actually connected.