Closed Bug 305313 Opened 19 years ago Closed 19 years ago

Allow additional predicates in assertions for bookmarks datasource

Categories

(Firefox :: Bookmarks & History, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Firefox1.5

People

(Reporter: toddsf, Assigned: toddsf)

Details

(Keywords: fixed1.8)

Attachments

(1 file, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20050818 Firefox/1.6a1
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20050818 Firefox/1.6a1

nsIBooksMarks service restricts predicates that can be set on the bookmarks
datasource via nsiBookmarksService::CanAccept(). The attached patch allows two
additional predicates (instanceOf and forwardProxy) to be used. These are
required to create bookmarks and folders via the RDF interface.

Reproducible: Always
Attached patch Bookmarks patch for CanAccept(). (obsolete) — Splinter Review
This is more of an RFE than a bug, so I'm confirming it.
Status: UNCONFIRMED → NEW
Ever confirmed: true
ok, no obvious owner for this, so I'm assigning to todd and will help him get
this patch submitted
Assignee: nobody → todd
So, we're changing the whole bookmarks component and moving to a sqlite-backed
storage solution, does this matter in the new world?
No; this all goes away in the new world.
So in the new world, we'll be able to make arbitrary RDF assertions in the
bookmarks datasource? or at least will the bookmarks datasource allow folder
creation through nsIRDFDataSource?
In the new world there will not be a bookmarks RDF datasource.
(There may be a read-only RDF datasource for compatability, but you most likely
won't be able to create new assertions this way)
Comment on attachment 193283 [details] [diff] [review]
Bookmarks patch for CanAccept().

wow, that's really pretty disappointing... but a whole other issue that myself
or todd can complain about later :)

In the meantime, since this won't be rewritten for 1.5, I'd like to help todd
get this into the trunk. He's got an interesting extension that allows some
neat RDF-based datasource merging that depends on this patch.
Attachment #193283 - Flags: review?(vladimir)
Are you ok with the kForwardProxy assertion automatically changing if the URL of
the bookmark is ever changed by the user?  Also, are you ok with your custom
forwardProxy and instanceOf bits never getting saved to disk?
(In reply to comment #10)
> Are you ok with the kForwardProxy assertion automatically changing if the URL of
> the bookmark is ever changed by the user?

Yes, that's fine.

>  Also, are you ok with your custom
> forwardProxy and instanceOf bits never getting saved to disk?

That would be a problem. Would instanceOf be treated any differently from, say,
nextVal (which presumably is saved to disk)? They're both container-related, so
I assumed they're both written to disk. What did I overlook?
(In reply to comment #11)
> >  Also, are you ok with your custom
> > forwardProxy and instanceOf bits never getting saved to disk?
> 
> That would be a problem. Would instanceOf be treated any differently from, say,
> nextVal (which presumably is saved to disk)? They're both container-related, so
> I assumed they're both written to disk. What did I overlook?

nextVal is never saved to disk as nextval; Bookmarks are not serialized using
RDF.  It's purely an in-memory store that's populated from bookmarks.html and
written to it using a custom pseudo-HTML goop writer.
(In reply to comment #12)
> 
> nextVal is never saved to disk as nextval; Bookmarks are not serialized using
> RDF.  It's purely an in-memory store that's populated from bookmarks.html and
> written to it using a custom pseudo-HTML goop writer.

Thanks for pointing that out -- I had overlooked how bookmarks get written to disk.

Fortunately, I don't think it affects what I'm trying to do. The goal is to make
the same sequence of assertions that the bookmark service itself generates (on
mInner) when it creates, modifies, or deletes bookmarks, folders, separators,
etc. As it stands now, the only obstacle is CanAccept(), which refuses from
clients a few types of assertions (like instanceOf) that it uses itself
internally. (Actually, bmsvc calls container utils::MakeSeq() which does an
instanceOf assertion. But I digress.)

So long as the datasource's state is the same after my series of manual
assertions as it would be had I used one of bmsvc's functions (e.g.,
CreateFolder()) directly, everything else should work out. I'm not trying to
create any new types of assertions, but merely echo manually the ones that bmsvc
uses itself.
Attached patch Revised patch.Splinter Review
Revised patch for CanAccept(). Now also allows NC:ID assertions.
Attachment #193283 - Attachment is obsolete: true
Comment on attachment 193283 [details] [diff] [review]
Bookmarks patch for CanAccept().

I'm still a little scared about this, because I'm not sure what the behaviour
will be of things if instanceOf/etc. are set to things that are not expected...
the entire bookmarks system is rather fragile.	However, the risk here is only
if an extension actually sets these RDF assertions itself, and shouldn't affect
normal usage, so that's probably safe enough.

r=vladimir
Attachment #193283 - Flags: review?(vladimir) → review+
Flags: blocking1.8b5?
Target Milestone: --- → Firefox1.5
Todd,

Please land this on the trunk and mark the bug as resolved->fixed.   Then ask
for 1.8b5 approval in the patch.
Flags: blocking1.8b5? → blocking1.8b5+
(In reply to comment #16)
> Todd,
> 
> Please land this on the trunk and mark the bug as resolved->fixed.   Then ask
> for 1.8b5 approval in the patch.

Mike,

Can you please provide some direction on what I need to do to land this patch on
the trunk? {Insert clueless newbie apologies here.}

Thanks,

-Todd
(In reply to comment #17)
> Can you please provide some direction on what I need to do to land this patch on
> the trunk? {Insert clueless newbie apologies here.}

You need to find someone with CVS access to check it in. You can try asking
#developers on irc.mozilla.org.
Todd, I can get it landed for you on the trunk; wasn't sure if you had cvs
access or not.  I'll get it in in a bit today.
(In reply to comment #19)
> Todd, I can get it landed for you on the trunk; wasn't sure if you had cvs
> access or not.  I'll get it in in a bit today.
> 

Vlad,

No, I don't have cvs access. Thanks for your help.

-Todd
Comment on attachment 195194 [details] [diff] [review]
Revised patch.

r=vladimir on revised patch

checked in on trunk.
Attachment #195194 - Flags: review+
Attachment #195194 - Flags: approval1.8b5?
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Attachment #195194 - Flags: approval1.8b5? → approval1.8b5+
Vlad - can you also land on 1.8 branch and mark fixed1.8?
Checked in on branch.
Keywords: fixed1.8
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: