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.
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.
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.
* changes:
docs: update the Bluetooth guide with links to the sample app, scrub the sibling files, and revise the Bluetooth package summary to point to the BT dev guide.