Loading api/current.xml +0 −35 Original line number Diff line number Diff line Loading @@ -27062,19 +27062,6 @@ deprecated="not deprecated" visibility="public" > <method name="setKeyPrefix" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="keyPrefix" type="java.lang.String"> </parameter> </method> <method name="writeEntityData" return="int" abstract="false" Loading Loading @@ -27109,28 +27096,6 @@ <exception name="IOException" type="java.io.IOException"> </exception> </method> <field name="OP_DELETE" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="OP_UPDATE" type="int" transient="false" volatile="false" value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <interface name="BackupHelper" abstract="true" core/java/android/app/backup/BackupDataOutput.java +1 −3 Original line number Diff line number Diff line Loading @@ -25,9 +25,6 @@ import java.io.IOException; public class BackupDataOutput { int mBackupWriter; public static final int OP_UPDATE = 1; public static final int OP_DELETE = 2; /** @hide */ public BackupDataOutput(FileDescriptor fd) { if (fd == null) throw new NullPointerException(); Loading Loading @@ -71,6 +68,7 @@ public class BackupDataOutput { } } /** @hide */ public void setKeyPrefix(String keyPrefix) { setKeyPrefix_native(mBackupWriter, keyPrefix); } Loading core/java/android/provider/Browser.java +5 −20 Original line number Diff line number Diff line Loading @@ -574,7 +574,9 @@ public class Browser { } /** * Request all icons from the database. * Request all icons from the database. This call must either be called * in the main thread or have had Looper.prepare() invoked in the calling * thread. * Requires {@link android.Manifest.permission#READ_HISTORY_BOOKMARKS} * @param cr The ContentResolver used to access the database. * @param where Clause to be used to limit the query from the database. Loading @@ -584,25 +586,8 @@ public class Browser { */ public static final void requestAllIcons(ContentResolver cr, String where, WebIconDatabase.IconListener listener) { Cursor c = null; try { c = cr.query( BOOKMARKS_URI, new String[] { BookmarkColumns.URL }, where, null, null); if (c.moveToFirst()) { final WebIconDatabase db = WebIconDatabase.getInstance(); do { db.requestIconForPageUrl(c.getString(0), listener); } while (c.moveToNext()); } } catch (IllegalStateException e) { Log.e(LOGTAG, "requestAllIcons", e); } finally { if (c != null) { c.close(); } } WebIconDatabase.getInstance() .bulkRequestIconForPageUrl(cr, where, listener); } public static class BookmarkColumns implements BaseColumns { Loading core/java/android/webkit/WebIconDatabase.java +74 −7 Original line number Diff line number Diff line Loading @@ -16,10 +16,15 @@ package android.webkit; import android.content.ContentResolver; import android.database.Cursor; import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import android.graphics.Bitmap; import android.provider.Browser; import android.util.Log; import java.util.HashMap; import java.util.Vector; /** Loading @@ -30,6 +35,7 @@ import java.util.Vector; * single object. */ public final class WebIconDatabase { private static final String LOGTAG = "WebIconDatabase"; // Global instance of a WebIconDatabase private static WebIconDatabase sIconDatabase; // EventHandler for handling messages before and after the WebCore thread is Loading @@ -45,6 +51,7 @@ public final class WebIconDatabase { static final int REQUEST_ICON = 3; static final int RETAIN_ICON = 4; static final int RELEASE_ICON = 5; static final int BULK_REQUEST_ICON = 6; // Message for dispatching icon request results private static final int ICON_RESULT = 10; // Actual handler that runs in WebCore thread Loading Loading @@ -100,12 +107,11 @@ public final class WebIconDatabase { case REQUEST_ICON: IconListener l = (IconListener) msg.obj; String url = msg.getData().getString("url"); Bitmap icon = nativeIconForPageUrl(url); if (icon != null) { EventHandler.this.sendMessage( Message.obtain(null, ICON_RESULT, new IconResult(url, icon, l))); } requestIconAndSendResult(url, l); break; case BULK_REQUEST_ICON: bulkRequestIcons(msg); break; case RETAIN_ICON: Loading @@ -126,6 +132,10 @@ public final class WebIconDatabase { } } private synchronized boolean hasHandler() { return mHandler != null; } private synchronized void postMessage(Message msg) { if (mMessages != null) { mMessages.add(msg); Loading @@ -133,6 +143,39 @@ public final class WebIconDatabase { mHandler.sendMessage(msg); } } private void bulkRequestIcons(Message msg) { HashMap map = (HashMap) msg.obj; IconListener listener = (IconListener) map.get("listener"); ContentResolver cr = (ContentResolver) map.get("contentResolver"); String where = (String) map.get("where"); Cursor c = null; try { c = cr.query( Browser.BOOKMARKS_URI, new String[] { Browser.BookmarkColumns.URL }, where, null, null); if (c.moveToFirst()) { do { String url = c.getString(0); requestIconAndSendResult(url, listener); } while (c.moveToNext()); } } catch (IllegalStateException e) { Log.e(LOGTAG, "BulkRequestIcons", e); } finally { if (c != null) c.close(); } } private void requestIconAndSendResult(String url, IconListener listener) { Bitmap icon = nativeIconForPageUrl(url); if (icon != null) { sendMessage(obtainMessage(ICON_RESULT, new IconResult(url, icon, listener))); } } } /** Loading Loading @@ -192,6 +235,30 @@ public final class WebIconDatabase { mEventHandler.postMessage(msg); } /** {@hide} */ public void bulkRequestIconForPageUrl(ContentResolver cr, String where, IconListener listener) { if (listener == null) { return; } // Special case situation: we don't want to add this message to the // queue if there is no handler because we may never have a real // handler to service the messages and the cursor will never get // closed. if (mEventHandler.hasHandler()) { // Don't use Bundle as it is parcelable. HashMap<String, Object> map = new HashMap<String, Object>(); map.put("contentResolver", cr); map.put("where", where); map.put("listener", listener); Message msg = Message.obtain(null, EventHandler.BULK_REQUEST_ICON, map); mEventHandler.postMessage(msg); } } /** * Retain the icon for the given page url. * @param url The page's url. Loading docs/html/guide/practices/screens_support.jd +3 −3 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ screen. </p> generalized densities: high, medium, and low. Applications can provide custom resources for each of these three densities — the platform handles the scaling of the resources up or down to meet the actual screen density. </p></dd> <dt><em>Density independent pixel (dip)</em></dt> <dt><em>Density-independent pixel (dip)</em></dt> <dd>A virtual pixel unit that applications can use in defining their UI, to express layout dimensions or position in a density-independent way. <p>The density-independent pixel is equivalent to one physical pixel on a 160 Loading Loading @@ -432,7 +432,7 @@ does this in three ways: </p> <ul> <li>Through pre-scaling of drawable resources (scaled at resource loading time)</li> <li>Through auto-scaling of device-independent pixel (dip) values used in <li>Through auto-scaling of density-independent pixel (dip) values used in layouts</li> <li>Through auto-scaling of absolute pixel values used in the application (only needed if the application has set <code>android:anyDensity="false"</code> in its Loading Loading @@ -573,7 +573,7 @@ installing the application on small-screen devices. </li> are signaling to the platform that your application wants to manage its UI by itself, for all screen densities, using the actual screen dimensions and pixels. In this case, the application must ensure that it declares its UI dimensions using device-independent pixels and scales any actual pixel values or math by using density-independent pixels and scales any actual pixel values or math by the scaling factor available from {@link android.util.DisplayMetrics#density android.util.DisplayMetrics.density}.</p> Loading Loading
api/current.xml +0 −35 Original line number Diff line number Diff line Loading @@ -27062,19 +27062,6 @@ deprecated="not deprecated" visibility="public" > <method name="setKeyPrefix" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="keyPrefix" type="java.lang.String"> </parameter> </method> <method name="writeEntityData" return="int" abstract="false" Loading Loading @@ -27109,28 +27096,6 @@ <exception name="IOException" type="java.io.IOException"> </exception> </method> <field name="OP_DELETE" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="OP_UPDATE" type="int" transient="false" volatile="false" value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <interface name="BackupHelper" abstract="true"
core/java/android/app/backup/BackupDataOutput.java +1 −3 Original line number Diff line number Diff line Loading @@ -25,9 +25,6 @@ import java.io.IOException; public class BackupDataOutput { int mBackupWriter; public static final int OP_UPDATE = 1; public static final int OP_DELETE = 2; /** @hide */ public BackupDataOutput(FileDescriptor fd) { if (fd == null) throw new NullPointerException(); Loading Loading @@ -71,6 +68,7 @@ public class BackupDataOutput { } } /** @hide */ public void setKeyPrefix(String keyPrefix) { setKeyPrefix_native(mBackupWriter, keyPrefix); } Loading
core/java/android/provider/Browser.java +5 −20 Original line number Diff line number Diff line Loading @@ -574,7 +574,9 @@ public class Browser { } /** * Request all icons from the database. * Request all icons from the database. This call must either be called * in the main thread or have had Looper.prepare() invoked in the calling * thread. * Requires {@link android.Manifest.permission#READ_HISTORY_BOOKMARKS} * @param cr The ContentResolver used to access the database. * @param where Clause to be used to limit the query from the database. Loading @@ -584,25 +586,8 @@ public class Browser { */ public static final void requestAllIcons(ContentResolver cr, String where, WebIconDatabase.IconListener listener) { Cursor c = null; try { c = cr.query( BOOKMARKS_URI, new String[] { BookmarkColumns.URL }, where, null, null); if (c.moveToFirst()) { final WebIconDatabase db = WebIconDatabase.getInstance(); do { db.requestIconForPageUrl(c.getString(0), listener); } while (c.moveToNext()); } } catch (IllegalStateException e) { Log.e(LOGTAG, "requestAllIcons", e); } finally { if (c != null) { c.close(); } } WebIconDatabase.getInstance() .bulkRequestIconForPageUrl(cr, where, listener); } public static class BookmarkColumns implements BaseColumns { Loading
core/java/android/webkit/WebIconDatabase.java +74 −7 Original line number Diff line number Diff line Loading @@ -16,10 +16,15 @@ package android.webkit; import android.content.ContentResolver; import android.database.Cursor; import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import android.graphics.Bitmap; import android.provider.Browser; import android.util.Log; import java.util.HashMap; import java.util.Vector; /** Loading @@ -30,6 +35,7 @@ import java.util.Vector; * single object. */ public final class WebIconDatabase { private static final String LOGTAG = "WebIconDatabase"; // Global instance of a WebIconDatabase private static WebIconDatabase sIconDatabase; // EventHandler for handling messages before and after the WebCore thread is Loading @@ -45,6 +51,7 @@ public final class WebIconDatabase { static final int REQUEST_ICON = 3; static final int RETAIN_ICON = 4; static final int RELEASE_ICON = 5; static final int BULK_REQUEST_ICON = 6; // Message for dispatching icon request results private static final int ICON_RESULT = 10; // Actual handler that runs in WebCore thread Loading Loading @@ -100,12 +107,11 @@ public final class WebIconDatabase { case REQUEST_ICON: IconListener l = (IconListener) msg.obj; String url = msg.getData().getString("url"); Bitmap icon = nativeIconForPageUrl(url); if (icon != null) { EventHandler.this.sendMessage( Message.obtain(null, ICON_RESULT, new IconResult(url, icon, l))); } requestIconAndSendResult(url, l); break; case BULK_REQUEST_ICON: bulkRequestIcons(msg); break; case RETAIN_ICON: Loading @@ -126,6 +132,10 @@ public final class WebIconDatabase { } } private synchronized boolean hasHandler() { return mHandler != null; } private synchronized void postMessage(Message msg) { if (mMessages != null) { mMessages.add(msg); Loading @@ -133,6 +143,39 @@ public final class WebIconDatabase { mHandler.sendMessage(msg); } } private void bulkRequestIcons(Message msg) { HashMap map = (HashMap) msg.obj; IconListener listener = (IconListener) map.get("listener"); ContentResolver cr = (ContentResolver) map.get("contentResolver"); String where = (String) map.get("where"); Cursor c = null; try { c = cr.query( Browser.BOOKMARKS_URI, new String[] { Browser.BookmarkColumns.URL }, where, null, null); if (c.moveToFirst()) { do { String url = c.getString(0); requestIconAndSendResult(url, listener); } while (c.moveToNext()); } } catch (IllegalStateException e) { Log.e(LOGTAG, "BulkRequestIcons", e); } finally { if (c != null) c.close(); } } private void requestIconAndSendResult(String url, IconListener listener) { Bitmap icon = nativeIconForPageUrl(url); if (icon != null) { sendMessage(obtainMessage(ICON_RESULT, new IconResult(url, icon, listener))); } } } /** Loading Loading @@ -192,6 +235,30 @@ public final class WebIconDatabase { mEventHandler.postMessage(msg); } /** {@hide} */ public void bulkRequestIconForPageUrl(ContentResolver cr, String where, IconListener listener) { if (listener == null) { return; } // Special case situation: we don't want to add this message to the // queue if there is no handler because we may never have a real // handler to service the messages and the cursor will never get // closed. if (mEventHandler.hasHandler()) { // Don't use Bundle as it is parcelable. HashMap<String, Object> map = new HashMap<String, Object>(); map.put("contentResolver", cr); map.put("where", where); map.put("listener", listener); Message msg = Message.obtain(null, EventHandler.BULK_REQUEST_ICON, map); mEventHandler.postMessage(msg); } } /** * Retain the icon for the given page url. * @param url The page's url. Loading
docs/html/guide/practices/screens_support.jd +3 −3 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ screen. </p> generalized densities: high, medium, and low. Applications can provide custom resources for each of these three densities — the platform handles the scaling of the resources up or down to meet the actual screen density. </p></dd> <dt><em>Density independent pixel (dip)</em></dt> <dt><em>Density-independent pixel (dip)</em></dt> <dd>A virtual pixel unit that applications can use in defining their UI, to express layout dimensions or position in a density-independent way. <p>The density-independent pixel is equivalent to one physical pixel on a 160 Loading Loading @@ -432,7 +432,7 @@ does this in three ways: </p> <ul> <li>Through pre-scaling of drawable resources (scaled at resource loading time)</li> <li>Through auto-scaling of device-independent pixel (dip) values used in <li>Through auto-scaling of density-independent pixel (dip) values used in layouts</li> <li>Through auto-scaling of absolute pixel values used in the application (only needed if the application has set <code>android:anyDensity="false"</code> in its Loading Loading @@ -573,7 +573,7 @@ installing the application on small-screen devices. </li> are signaling to the platform that your application wants to manage its UI by itself, for all screen densities, using the actual screen dimensions and pixels. In this case, the application must ensure that it declares its UI dimensions using device-independent pixels and scales any actual pixel values or math by using density-independent pixels and scales any actual pixel values or math by the scaling factor available from {@link android.util.DisplayMetrics#density android.util.DisplayMetrics.density}.</p> Loading