GetAnnotationInfo always returns VALUE_TYPE_TEXT as the annotation type

RESOLVED FIXED in Firefox 3 alpha4

Status

()

Firefox
Bookmarks & History
--
major
RESOLVED FIXED
10 years ago
8 years ago

People

(Reporter: mano, Assigned: dietrich)

Tracking

unspecified
Firefox 3 alpha4
Points:
---
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment, 5 obsolete attachments)

GetAnnotationInfo always returns VALUE_TYPE_TEXT as the annotation type.

From bug 376851
+/**
+* XXX: You may think the two methods below are reliable.
+*
+* They simply check the type of the content field, which is always
+* VALUE_TYPE_TEXT, How come you're wondering? The field is created as
+* LONGVARCHAR, that's how. See InitTables().
+*
+* The fix would be to add yet another field to the annos table and save the
+* type there. This isn't a good use of dietrich's time but we don't really
+* have a choice here...
+*/
(Assignee)

Comment 1

10 years ago
Created attachment 261815 [details] [diff] [review]
wip pach
(Assignee)

Comment 2

10 years ago
Created attachment 261999 [details] [diff] [review]
fix v1

+ write db upgrade
+ add type handling to set/get anno methods
+ add type handling to getannoinfo(), handle pre-type annos
+ update callers to use annosvc types instead of mozstorage types
+ add tests for types

+ test upgrade from v2-> v3
+ test downgrade from v3 -> v2
+ test sidegrade from v3-bookmarks to v3-no-bookmarks
+ test sidegrade from v3-no-bookmarks to v3-bookmarks
Attachment #261815 - Attachment is obsolete: true
Attachment #261999 - Flags: review?(mano)
(Assignee)

Comment 3

10 years ago
Created attachment 262056 [details] [diff] [review]
fix v2 (updates a couple of consumers)

updates a couple of places where mozIStorage types were being used.
Attachment #261999 - Attachment is obsolete: true
Attachment #262056 - Flags: review?(mano)
Attachment #261999 - Flags: review?(mano)
Comment on attachment 262056 [details] [diff] [review]
fix v2 (updates a couple of consumers)

> >@@ -480,17 +491,27 @@ nsAnnotationService::GetAnnotationInfo(n
>   if (NS_FAILED(rv))
>     return rv;
>   mozStorageStatementScoper resetter(mDBGetAnnotationFromURI);
> 
>   *aFlags = mDBGetAnnotationFromURI->AsInt32(kAnnoIndex_Flags);
>   *aExpiration = mDBGetAnnotationFromURI->AsInt32(kAnnoIndex_Expiration);
>   rv = mDBGetAnnotationFromURI->GetUTF8String(kAnnoIndex_MimeType, aMimeType);
>   NS_ENSURE_SUCCESS(rv, rv);
>-  rv = mDBGetAnnotationFromURI->GetTypeOfIndex(kAnnoIndex_Content, aStorageType);
>+  PRInt32 type = mDBGetAnnotationFromURI->AsInt32(kAnnoIndex_Type);
>+  if (type == 0) {
>+    // For annotations created before explicit typing, return the mozStorage
>+    // type const.
>+    // Note: The anno service type consts match these as close as possible.
>+    // The difference is that int64 values will report int32.
>+    rv = mDBGetAnnotationFromURI->GetTypeOfIndex(kAnnoIndex_Content, aStorageType);

Again, this is wrong, it would always return VALUE_TYPE_TEXT.

I would bother making the various GetAnnotationAsTypeFoo methods throw if the annotation is not of type Foo.
Attachment #262056 - Flags: review?(mano) → review-
(Assignee)

Comment 5

10 years ago
Created attachment 262066 [details] [diff] [review]
fix v3

update comment, return string type for legacy annos.
Attachment #262056 - Attachment is obsolete: true
Attachment #262066 - Flags: review?(mano)
(Assignee)

Comment 6

10 years ago
Created attachment 262067 [details] [diff] [review]
fix v3, sans localstore.rdf
Attachment #262066 - Attachment is obsolete: true
Attachment #262067 - Flags: review?(mano)
Attachment #262066 - Flags: review?(mano)
(Assignee)

Updated

10 years ago
Attachment #262067 - Flags: review?(mano)
(Assignee)

Comment 7

10 years ago
Created attachment 262072 [details] [diff] [review]
fix v4

The GetAnnotation* methods now throw if the annotation is the wrong type.
Attachment #262067 - Attachment is obsolete: true
Attachment #262072 - Flags: review?(mano)
Comment on attachment 262072 [details] [diff] [review]
fix v4

r=mano, thanks!
Attachment #262072 - Flags: review?(mano) → review+
(Assignee)

Comment 9

10 years ago
Checking in browser/components/places/content/bookmarkProperties.js;
/cvsroot/mozilla/browser/components/places/content/bookmarkProperties.js,v  <--  bookmarkProperties.js
new revision: 1.42; previous revision: 1.41
done
Checking in browser/components/places/content/controller.js;
/cvsroot/mozilla/browser/components/places/content/controller.js,v  <--  controller.js
new revision: 1.143; previous revision: 1.142
done
Checking in browser/components/places/content/utils.js;
/cvsroot/mozilla/browser/components/places/content/utils.js,v  <--  utils.js
new revision: 1.31; previous revision: 1.30
done
Checking in toolkit/components/places/public/nsIAnnotationService.idl;
/cvsroot/mozilla/toolkit/components/places/public/nsIAnnotationService.idl,v  <--  nsIAnnotationService.idl
new revision: 1.11; previous revision: 1.10
done
Checking in toolkit/components/places/src/nsAnnotationService.cpp;
/cvsroot/mozilla/toolkit/components/places/src/nsAnnotationService.cpp,v  <--  nsAnnotationService.cpp
new revision: 1.17; previous revision: 1.16
done
Checking in toolkit/components/places/src/nsAnnotationService.h;
/cvsroot/mozilla/toolkit/components/places/src/nsAnnotationService.h,v  <--  nsAnnotationService.h
new revision: 1.9; previous revision: 1.8
done
Checking in toolkit/components/places/src/nsNavHistory.cpp;
/cvsroot/mozilla/toolkit/components/places/src/nsNavHistory.cpp,v  <--  nsNavHistory.cpp
new revision: 1.116; previous revision: 1.115
done
Checking in toolkit/components/places/src/nsNavHistory.h;
/cvsroot/mozilla/toolkit/components/places/src/nsNavHistory.h,v  <--  nsNavHistory.h
new revision: 1.74; previous revision: 1.73
done
Checking in toolkit/components/places/tests/unit/test_annotations.js;
/cvsroot/mozilla/toolkit/components/places/tests/unit/test_annotations.js,v  <--  test_annotations.js
new revision: 1.2; previous revision: 1.1
done
Status: NEW → RESOLVED
Last Resolved: 10 years ago
Resolution: --- → FIXED
Flags: in-testsuite+
Bug 451915 - move Firefox/Places bugs to Firefox/Bookmarks and History. Remove all bugspam from this move by filtering for the string "places-to-b-and-h".

In Thunderbird 3.0b, you do that as follows:
Tools | Message Filters
Make sure the correct account is selected. Click "New"
Conditions: Body   contains   places-to-b-and-h
Change the action to "Delete Message".
Select "Manually Run" from the dropdown at the top.
Click OK.

Select the filter in the list, make sure "Inbox" is selected at the bottom, and click "Run Now". This should delete all the bugspam. You can then delete the filter.

Gerv
Component: Places → Bookmarks & History
QA Contact: places → bookmarks
You need to log in before you can comment on or make changes to this bug.