@@ -42,7 +42,7 @@ public class WebViewDatabase {
4242 // log tag
4343 protected static final String LOGTAG = "webviewdatabase" ;
4444
45- private static final int DATABASE_VERSION = 10 ;
45+ private static final int DATABASE_VERSION = 11 ;
4646 // 2 -> 3 Modified Cache table to allow cache of redirects
4747 // 3 -> 4 Added Oma-Downloads table
4848 // 4 -> 5 Modified Cache table to support persistent contentLength
@@ -52,6 +52,9 @@ public class WebViewDatabase {
5252 // 7 -> 8 Move cache to its own db
5353 // 8 -> 9 Store both scheme and host when storing passwords
5454 // 9 -> 10 Update httpauth table UNIQUE
55+ // 10 -> 11 Drop cookies and cache now managed by the chromium stack,
56+ // and update the form data table to use the new format
57+ // implemented for b/5265606.
5558 private static final int CACHE_DATABASE_VERSION = 4 ;
5659 // 1 -> 2 Add expires String
5760 // 2 -> 3 Add content-disposition
@@ -204,7 +207,9 @@ private synchronized void init(Context context) {
204207 }
205208
206209 initDatabase (context );
207- if (!JniUtil .useChromiumHttpStack ()) {
210+ if (JniUtil .useChromiumHttpStack ()) {
211+ context .deleteDatabase (CACHE_DATABASE_FILE );
212+ } else {
208213 initCacheDatabase (context );
209214 }
210215
@@ -327,15 +332,59 @@ private void initCacheDatabase(Context context) {
327332 }
328333
329334 private static void upgradeDatabase () {
335+ upgradeDatabaseToV10 ();
336+ upgradeDatabaseFromV10ToV11 ();
337+ // Add future database upgrade functions here, one version at a
338+ // time.
339+ mDatabase .setVersion (DATABASE_VERSION );
340+ }
341+
342+ private static void upgradeDatabaseFromV10ToV11 () {
343+ int oldVersion = mDatabase .getVersion ();
344+
345+ if (oldVersion >= 11 ) {
346+ // Nothing to do.
347+ return ;
348+ }
349+
350+ if (JniUtil .useChromiumHttpStack ()) {
351+ // Clear out old java stack cookies - this data is now stored in
352+ // a separate database managed by the Chrome stack.
353+ mDatabase .execSQL ("DROP TABLE IF EXISTS " + mTableNames [TABLE_COOKIES_ID ]);
354+
355+ // Likewise for the old cache table.
356+ mDatabase .execSQL ("DROP TABLE IF EXISTS cache" );
357+ }
358+
359+ // Update form autocomplete URLs to match new ICS formatting.
360+ Cursor c = mDatabase .query (mTableNames [TABLE_FORMURL_ID ], null , null ,
361+ null , null , null , null );
362+ while (c .moveToNext ()) {
363+ String urlId = Long .toString (c .getLong (c .getColumnIndex (ID_COL )));
364+ String url = c .getString (c .getColumnIndex (FORMURL_URL_COL ));
365+ ContentValues cv = new ContentValues (1 );
366+ cv .put (FORMURL_URL_COL , WebTextView .urlForAutoCompleteData (url ));
367+ mDatabase .update (mTableNames [TABLE_FORMURL_ID ], cv , ID_COL + "=?" ,
368+ new String [] { urlId });
369+ }
370+ c .close ();
371+ }
372+
373+ private static void upgradeDatabaseToV10 () {
330374 int oldVersion = mDatabase .getVersion ();
375+
376+ if (oldVersion >= 10 ) {
377+ // Nothing to do.
378+ return ;
379+ }
380+
331381 if (oldVersion != 0 ) {
332382 Log .i (LOGTAG , "Upgrading database from version "
333383 + oldVersion + " to "
334384 + DATABASE_VERSION + ", which will destroy old data" );
335385 }
336- boolean justPasswords = 8 == oldVersion && 9 == DATABASE_VERSION ;
337- boolean justAuth = 9 == oldVersion && 10 == DATABASE_VERSION ;
338- if (justAuth ) {
386+
387+ if (9 == oldVersion ) {
339388 mDatabase .execSQL ("DROP TABLE IF EXISTS "
340389 + mTableNames [TABLE_HTTPAUTH_ID ]);
341390 mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_HTTPAUTH_ID ]
@@ -348,55 +397,49 @@ private static void upgradeDatabase() {
348397 return ;
349398 }
350399
351- if (!justPasswords ) {
352- mDatabase .execSQL ("DROP TABLE IF EXISTS "
353- + mTableNames [TABLE_COOKIES_ID ]);
354- mDatabase .execSQL ("DROP TABLE IF EXISTS cache" );
355- mDatabase .execSQL ("DROP TABLE IF EXISTS "
356- + mTableNames [TABLE_FORMURL_ID ]);
357- mDatabase .execSQL ("DROP TABLE IF EXISTS "
358- + mTableNames [TABLE_FORMDATA_ID ]);
359- mDatabase .execSQL ("DROP TABLE IF EXISTS "
360- + mTableNames [TABLE_HTTPAUTH_ID ]);
361- }
400+ mDatabase .execSQL ("DROP TABLE IF EXISTS "
401+ + mTableNames [TABLE_COOKIES_ID ]);
402+ mDatabase .execSQL ("DROP TABLE IF EXISTS cache" );
403+ mDatabase .execSQL ("DROP TABLE IF EXISTS "
404+ + mTableNames [TABLE_FORMURL_ID ]);
405+ mDatabase .execSQL ("DROP TABLE IF EXISTS "
406+ + mTableNames [TABLE_FORMDATA_ID ]);
407+ mDatabase .execSQL ("DROP TABLE IF EXISTS "
408+ + mTableNames [TABLE_HTTPAUTH_ID ]);
362409 mDatabase .execSQL ("DROP TABLE IF EXISTS "
363410 + mTableNames [TABLE_PASSWORD_ID ]);
364411
365- mDatabase .setVersion (DATABASE_VERSION );
366-
367- if (!justPasswords ) {
368- // cookies
369- mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_COOKIES_ID ]
370- + " (" + ID_COL + " INTEGER PRIMARY KEY, "
371- + COOKIES_NAME_COL + " TEXT, " + COOKIES_VALUE_COL
372- + " TEXT, " + COOKIES_DOMAIN_COL + " TEXT, "
373- + COOKIES_PATH_COL + " TEXT, " + COOKIES_EXPIRES_COL
374- + " INTEGER, " + COOKIES_SECURE_COL + " INTEGER" + ");" );
375- mDatabase .execSQL ("CREATE INDEX cookiesIndex ON "
376- + mTableNames [TABLE_COOKIES_ID ] + " (path)" );
377-
378- // formurl
379- mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_FORMURL_ID ]
380- + " (" + ID_COL + " INTEGER PRIMARY KEY, " + FORMURL_URL_COL
381- + " TEXT" + ");" );
382-
383- // formdata
384- mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_FORMDATA_ID ]
385- + " (" + ID_COL + " INTEGER PRIMARY KEY, "
386- + FORMDATA_URLID_COL + " INTEGER, " + FORMDATA_NAME_COL
387- + " TEXT, " + FORMDATA_VALUE_COL + " TEXT," + " UNIQUE ("
388- + FORMDATA_URLID_COL + ", " + FORMDATA_NAME_COL + ", "
389- + FORMDATA_VALUE_COL + ") ON CONFLICT IGNORE);" );
412+ // cookies
413+ mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_COOKIES_ID ]
414+ + " (" + ID_COL + " INTEGER PRIMARY KEY, "
415+ + COOKIES_NAME_COL + " TEXT, " + COOKIES_VALUE_COL
416+ + " TEXT, " + COOKIES_DOMAIN_COL + " TEXT, "
417+ + COOKIES_PATH_COL + " TEXT, " + COOKIES_EXPIRES_COL
418+ + " INTEGER, " + COOKIES_SECURE_COL + " INTEGER" + ");" );
419+ mDatabase .execSQL ("CREATE INDEX cookiesIndex ON "
420+ + mTableNames [TABLE_COOKIES_ID ] + " (path)" );
421+
422+ // formurl
423+ mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_FORMURL_ID ]
424+ + " (" + ID_COL + " INTEGER PRIMARY KEY, " + FORMURL_URL_COL
425+ + " TEXT" + ");" );
426+
427+ // formdata
428+ mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_FORMDATA_ID ]
429+ + " (" + ID_COL + " INTEGER PRIMARY KEY, "
430+ + FORMDATA_URLID_COL + " INTEGER, " + FORMDATA_NAME_COL
431+ + " TEXT, " + FORMDATA_VALUE_COL + " TEXT," + " UNIQUE ("
432+ + FORMDATA_URLID_COL + ", " + FORMDATA_NAME_COL + ", "
433+ + FORMDATA_VALUE_COL + ") ON CONFLICT IGNORE);" );
390434
391- // httpauth
392- mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_HTTPAUTH_ID ]
393- + " (" + ID_COL + " INTEGER PRIMARY KEY, "
394- + HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL
395- + " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, "
396- + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
397- + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
398- + ") ON CONFLICT REPLACE);" );
399- }
435+ // httpauth
436+ mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_HTTPAUTH_ID ]
437+ + " (" + ID_COL + " INTEGER PRIMARY KEY, "
438+ + HTTPAUTH_HOST_COL + " TEXT, " + HTTPAUTH_REALM_COL
439+ + " TEXT, " + HTTPAUTH_USERNAME_COL + " TEXT, "
440+ + HTTPAUTH_PASSWORD_COL + " TEXT," + " UNIQUE ("
441+ + HTTPAUTH_HOST_COL + ", " + HTTPAUTH_REALM_COL
442+ + ") ON CONFLICT REPLACE);" );
400443 // passwords
401444 mDatabase .execSQL ("CREATE TABLE " + mTableNames [TABLE_PASSWORD_ID ]
402445 + " (" + ID_COL + " INTEGER PRIMARY KEY, "
@@ -411,7 +454,7 @@ private static void upgradeCacheDatabase() {
411454 if (oldVersion != 0 ) {
412455 Log .i (LOGTAG , "Upgrading cache database from version "
413456 + oldVersion + " to "
414- + DATABASE_VERSION + ", which will destroy all old data" );
457+ + CACHE_DATABASE_VERSION + ", which will destroy all old data" );
415458 }
416459 mCacheDatabase .execSQL ("DROP TABLE IF EXISTS cache" );
417460 mCacheDatabase .setVersion (CACHE_DATABASE_VERSION );
@@ -1150,7 +1193,7 @@ ArrayList<String> getFormData(String url, String name) {
11501193 cursor = mDatabase .query (mTableNames [TABLE_FORMURL_ID ],
11511194 ID_PROJECTION , urlSelection , new String [] { url }, null ,
11521195 null , null );
1153- if (cursor .moveToFirst ()) {
1196+ while (cursor .moveToNext ()) {
11541197 long urlid = cursor .getLong (cursor .getColumnIndex (ID_COL ));
11551198 Cursor dataCursor = null ;
11561199 try {
0 commit comments