A View initiates a drag-and-drop operation (hereafter just called a "drag")
by calling its startDrag(ClipData) method. Within the processing of that
call, two callbacks are made into the originating View. The first is to
onMeasureDragThumbnail(). Similarly to the core onMeasure() method, this
callback must respond by calling setDragThumbnailDimension(width, height) to
declare the size of the drag thumbnail image that should be used. Following
this, the View's onDrawDragThumbnail(canvas) method will be invoked to
actually produce the bits of the thumbnail image.
If all goes well, startDrag() will return 'true', and the drag is off and
running. (The other arguments to startDrag() provide reconciliation between
the current finger position and where the thumbnail should be placed on
the screen relative to it.)
Potential receipients of the ClipData behind the drag are notified by a
new dispatch mechanism, roughly parallel to motion event dispatch. The core
routine is the View's onDragEvent(event) callback, with the mechanics of
dispatch itself being routed through dispatchDragEvent(event) -- as in
the case of motion events, the dispatch logic is in ViewGroup, with leaf
View objects not needing to consider the dispatch flow.
Several different event 'actions' are delivered through this dispatch
mechanism:
ACTION_DRAG_STARTED: this event is propagated to every View in every window
(including windows created during the course of a drag). It serves as a
global notification that a drag has started with a payload whose matching
ClipDescription is supplied with the event. A View that is prepared to
consume the data described in this event should return 'true' from their
onDragEvent() method, and ideally will also make some visible on-screen
indication that they are a potential target of the drop.
ACTION_DRAG_ENTERED: this event is sent once when the drag point
enters the View's bounds. It is an opportunity for the View to set up
feedback that they are the one who will see the drop if the finger goes
up now.
ACTION_DRAG_LOCATION: when the drag point is over a given View, that
View will receive a stream of DRAG_LOCATION events, providing an
opportunity for the View to show visual feedback tied to the drag point.
ACTION_DRAG_EXITED: like DRAG_ENTERED, but called when the drag point
leaves the View's bounds. The View should undo any visuals meant to
emphasize their being the hovered-over target.
ACTION_DROP: when the drag ends at a given point, the View under that
point is sent this event, with the full ClipData of the payload.
ACTION_DRAG_ENDED: paralleling the DRAG_STARTED action, this is the global
broadcast that the drag has ended and all Views should return to their
normal visual state. This happens after the DROP event.
Change-Id: Ia8d0fb1516bce8c735d87ffd101af0976d7e84b6
Merge commit '727d67d4fb8721b0291312e4cca33927dfba0e31' into gingerbread-plus-aosp
* commit '727d67d4fb8721b0291312e4cca33927dfba0e31':
location: rebind to network location and geocoder services after package update
Merge commit '198297b495d975cd4889f5136cd69368bd319eed'
* commit '198297b495d975cd4889f5136cd69368bd319eed':
Revert "Revert "Check for the DEVICE_POWER permission in userActivity.""
Merge commit '8bd545ab4f7e75634c970b50ed15c20858d6ac0c'
* commit '8bd545ab4f7e75634c970b50ed15c20858d6ac0c':
Move all the permissions check up for unmount
Merge commit 'f01a873029641da2155ca1882f311d8f4e92675a' into gingerbread-plus-aosp
* commit 'f01a873029641da2155ca1882f311d8f4e92675a':
Revert "Revert "Check for the DEVICE_POWER permission in userActivity.""
Merge commit '212d81a004f50e51ed8f6d803b79f4b71546b351' into gingerbread-plus-aosp
* commit '212d81a004f50e51ed8f6d803b79f4b71546b351':
Move all the permissions check up for unmount
We have already scanned the state of the OBB in mountObb, so check the
caller against the stored state in the unmountObb call. This allows us
to ensure the calling binder is the same one that mounted it since we
tie the lifecycle of the OBB to the lifecycle of the binder.
Change-Id: I45d9cfbab5d3f5b37a6a9b594b10bd8b91cccc45
Merge commit '05e110506156a1b782232833b907afb428802b69'
* commit '05e110506156a1b782232833b907afb428802b69':
Revert "Check for the DEVICE_POWER permission in userActivity."
Merge commit 'a25eabad23d7b8fd430ada757ae4e9f2559f8845' into gingerbread-plus-aosp
* commit 'a25eabad23d7b8fd430ada757ae4e9f2559f8845':
Revert "Check for the DEVICE_POWER permission in userActivity."
Merge commit 'f5bdeba197aba659e2dd3849a5bdfba8826c036d'
* commit 'f5bdeba197aba659e2dd3849a5bdfba8826c036d':
Check for the DEVICE_POWER permission in userActivity.
Merge commit '05105f7abe02b2dff91d6260b3628c8b97816bab' into gingerbread-plus-aosp
* commit '05105f7abe02b2dff91d6260b3628c8b97816bab':
Update OBB API to include callbacks
Add a callback for users of the StorageManager API to be able to receive
notifications when the requested operation completes for mountObb and
unmountObb.
Add NDK API to get to ObbInfo like the Java API has.
Also update the docs for the API and remove the "STOPSHIP" comments.
Change-Id: I23a4409c7f8b74d3169614beba920b4d667990a4
Merge commit 'ea2cf2f936b03f1720bc43863e41c89ea2a7903a' into gingerbread-plus-aosp
* commit 'ea2cf2f936b03f1720bc43863e41c89ea2a7903a':
Check for the DEVICE_POWER permission in userActivity.
Merge commit 'b763a6dc41dcce76585c56657903ae72c5422ae1'
* commit 'b763a6dc41dcce76585c56657903ae72c5422ae1':
Fixes to granting URI permissions - take into account path perms.
Merge commit '08cf57d791e50ecafe2728a7617a6487aeb6d6d5' into gingerbread-plus-aosp
* commit '08cf57d791e50ecafe2728a7617a6487aeb6d6d5':
Fixes to granting URI permissions - take into account path perms.
Merge commit 'd0cb228b9af0b67fa3372ee075287e7409249550'
* commit 'd0cb228b9af0b67fa3372ee075287e7409249550':
squeeze a few more bits of randomness into /dev/random
I can't find the bug number for this, but it is needed for some things
we are doing where the app building an intent may not have access to the
URI in the data field. This is for HC, but doing in GB to avoid introducing
integration issues.
Change-Id: I0cac971854198b18775d2a73deb80f23431bfbe2
This is a manual cherrypick of:
Change I3a76de15: Fixing font scale in WindowManagerService. There was
a bug that causes WindowManagerService to lose the fontScale setting.
Change-Id: I9b993e11f6a3e75735d8ed05596083893543d732
Merge commit '68ef7f3c3a8deb0e14b0b6325876b23cecc191b3' into gingerbread-plus-aosp
* commit '68ef7f3c3a8deb0e14b0b6325876b23cecc191b3':
Move SipService out of SystemServer to phone process.
Merge commit '23142acffab69738b967812fdbdf7bbda18a44d8' into gingerbread-plus-aosp
* commit '23142acffab69738b967812fdbdf7bbda18a44d8':
squeeze a few more bits of randomness into /dev/random
Merge commit 'd8691d73d158acd9ffc63748126e822afd656707' into gingerbread-plus-aosp
* commit 'd8691d73d158acd9ffc63748126e822afd656707':
Allow all apps to call ContentResolver.getType().