Closed Bug 17723 Opened 25 years ago Closed 25 years ago

[HELP WANTED] Redesign OutputSinks

Categories

(Core :: DOM: Serializers, defect, P2)

defect

Tracking

()

VERIFIED WONTFIX

People

(Reporter: BenB, Assigned: akkzilla)

Details

(Whiteboard: [HELP WANTED])

HTMLToTXTSinkStream and related files are a mess. create class hierarchy. more follows.
Status: NEW → ASSIGNED
Ben and I were talking on IRC, and here's a sketch of what I was thinking at the time: We could start with nsOutputSink, which would have things like setting up the unicode encoder and having Write() methods. Then split into nsHTMLOutputSink and nsPlaintextOutputSink (ah, to get rid of names like nsHTMLToTXTSinkStream.h !) Then for example, nsPlaintextOutputSink could have nsUnformattedPlaintextSink and nsFormattedPlaintextSink, and so forth. The object of this is to have a cleaner hierarchy where we don't have all these complicated output flags. Unfortunately it's hard to do inheritance of interfaces in the same way, so this might not help the user who's stuck going through nsIDocumentEncoder, unless we create a zillion new interfaces.
Class Hierarchy (names will change): OutputSink +--HTML +--plain text +--unformatted +--formatted +--traditional +--format=flowed OutoutSink is a stream converter (see bug #1775).
I think this is a good thing in general, but note that the same input data can have both parts that should be output formatted and parts that should be output as if it were preformatted. That means that the same logic will have to be duplicated which are a bad thing.
Blocks: 16398
Blocks: 16800
Changing COmponent to Output and adding bug #16800 as dependency.
Blocks: 17824
Blocks: 17823
Assignee: mozilla → akkana
Status: ASSIGNED → NEW
Daniel's changes (bug #16398) have been checked in. I can't work, if I get no information.
Status: NEW → ASSIGNED
Target Milestone: M20
Setting milestone low because it's a code redesign issue and not a dogfood functionality issue; but that doesn't mean we can't do it sooner if we have time.
Blocks: 18012
Assignee: akkana → mozilla
Status: ASSIGNED → NEW
I think, I really need that for tables (bug #18012), reassigning to me.
Status: NEW → ASSIGNED
Priority: P3 → P2
Target Milestone: M20 → M12
No longer blocks: 16398, 16800, 17823, 17824
Target Milestone: M12 → M20
Design decision: To get some flexible structure, we have to design a browser minus interactivity plus different linebreak strategies (filled for tables, plain, flowed etc.). We not just have an existing design, but also a lot of code, we can reuse: NGLayout. The plan is to at least reuse everything until nsCSSFrameConstructor (see <http://www.mozilla.org/docs/url_load.html>), propably some of the nsIFrames. The problem is my limited knowledge about NGLayout and XPCOM. More detailed: I don't know, how to decide somewhere at the webshell, which "frameset" to use.
Assignee: mozilla → akkana
Status: ASSIGNED → NEW
Summary: Redesign OutputSinks → [HELP WANTED] Redesign OutputSinks
Whiteboard: [HELP WANTED]
I don't think, I'll work on that anytime soon. HELP WANTED.
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → WONTFIX
this function was not part of the initial design specs and would require architectual changes, marking wontfix
No longer blocks: 18012
Status: RESOLVED → VERIFIED
verified in 1/19 build.
beppe: > marking wontfix sujay: > verified in 1/19 build. LOL
Bulk move of all "Output" component bugs to new "DOM to Test Conversion" component. Output will be deleted as a component.
Component: Output → DOM to Text Conversion
Sorry for the spam! But apparently all these closed bugs need to have their target milestones changed since M19 and M20 are going away. Since they're allready closed, I'm choosing M18.
Target Milestone: M20 → M18
You need to log in before you can comment on or make changes to this bug.