Closed Bug 35639 Opened 24 years ago Closed 22 years ago

embedding: Need to design/ implement Editor Embedding APIs

Categories

(Core :: DOM: Editor, defect, P3)

x86
Other
defect

Tracking

()

VERIFIED DUPLICATE of bug 157128
mozilla1.0.1

People

(Reporter: travis, Assigned: mjudge)

References

Details

(Keywords: embed, topembed-, Whiteboard: [nsbeta2-][nsbeta3-],DIGBug)

Need to implement embedding APIs for editor.
Blocks: 35556
Sorry for the spam, changing QA contact.
QA Contact: paulmac → jrgm
Grab
Assignee: travis → sfraser
setting to m18 for now
Target Milestone: --- → M18
nom. doug should you get this?
Keywords: nsbeta2
Here's what needs to happen, I think, to make editor more embeddable in 
XUL applications.

The editor functionality is exposed through various non-xpidl 
interfaces in mozilla/editor/public (e.g. nsIEditor, nsIHTMLEditor 
etc). Interaction with JavaScript happens via nsIEditorShell, which 
acts as a fairly thin shell around the editor, and is exposed via 
xpidl. (The editor shell is really just a heavily mutated appcore from 
the old days.) It is the responsibility of the editor shell to observe 
URL loads on the iframe that is editable, and to instantiate the editor 
when the OnEndDocumentLoad notification is received.

The editor shell can be created in two ways. The 'old' way is to have an 
<iframe> in the XUL, and some JavaScript that does a CreateInstance of
the nsEditorShell. The JS then tells the editorShell what iframe to
observe by setting editorShell.contentWindow, before a call to loadURL.

The new way is to use the new <editor> tag which is specified via XBL.
This instantiates an nsEditorBoxObject in layout code, which itself
creates the editorShell, and owns it.

In both cases, a ton of support code in JavaScript is necessary to
set up the editorShell, hook up the editorShell to the UI, and cause the 
URL load whose end causes the editor to get instantiated. This code 
lives in mozilla/editor/ui/composer/content/editor.js, much of it in 
EditorStartup().

An unfortunate feature of much of this JS support code is that it 
assumes that there is only one editorShell in the window, and so limits 
you to having just one editable <iframe> in a window. This definately 
needs to change. A related problem is that, because of this restriction, 
we cannot edit all frames of a frameset at the same time, nor can we 
deal with embedded <iframe>s in the document being edited.

To solve these problems, the editor needs to live off a container at the 
docShell level; we need either nsIEditableDocShell, or calls on 
nsIDocShell to get/set an editorShell. You should also bear in mind that 
we might want some kind of editor at the nsIDocShellTreeOwner level, to 
allow for the editing of framesets.

We also need the editor to be much more pluggable, so that simply 
putting in an <editor> tag in your XUL causes all the editorShell 
creation/url loading/editor instantiation to happen automagically. This 
means moving much of this setup code from JS into C++.

Making [nsbeta2-] and Putting on [NEED INFO] radar. PDT needs to know impact to 
user and risk of fix to make a call on this bug. Please let us know when you 
have a fix in hand so we can discuss whether to land this thing or not. Adding 
nsbeta3 keyword.
Keywords: nsbeta3
Whiteboard: [nsbeta2-][NEED INFO]
akkana and I spoke today about other issues.  we would like to see the 
editor.dll split into three different components. 

1.  text editing
2.  basic html editing
3.  form and table editing.
dougt, should you own this bug?
Keywords: embed
parts of this bug are embedding releated, other parts may not be.  I am going to 
break this bug up into a couple then see what we can do about fixing them.  

For now, assigning to me.
Assignee: sfraser → dougt
plussing.
Whiteboard: [nsbeta2-][NEED INFO] → [nsbeta2-][NEED INFO][nsbeta3+]
Not enough time to do this.  punting.
Whiteboard: [nsbeta2-][NEED INFO][nsbeta3+] → [nsbeta2-]
Target Milestone: M18 → M26
Whiteboard: [nsbeta2-] → [nsbeta2-][nsbeta3-]
simon's taking on editor embedding point position.
Assignee: dougt → sfraser
Ongoing
Target Milestone: M26 → mozilla1.0
Updating QA Contact
QA Contact: jrgm → mdunn
*** Bug 30507 has been marked as a duplicate of this bug. ***
Blocks: 70229
Correction: Changing QA contact for the Embed API bugs to David Epstein.
QA Contact: mdunn → depstein
Bugs targeted at mozilla1.0 without the mozilla1.0 keyword moved to mozilla1.0.1 
(you can query for this string to delete spam or retrieve the list of bugs I've 
moved)
Target Milestone: mozilla1.0 → mozilla1.0.1
don't move bugs that are in the 1.0 dependency tree. sorry.
Target Milestone: mozilla1.0.1 → mozilla1.0
-> mjudge
Assignee: sfraser → mjudge
Summary: Need to design/ implement Editor Embedding APIs → [embed] Need to design/ implement Editor Embedding APIs
Blocks: 122158
Keywords: nsbeta2, nsbeta3
Keywords: topembed
Whiteboard: [nsbeta2-][nsbeta3-] → [nsbeta2-][nsbeta3-],DIGBug
Keywords: mozilla1.0+
EDT topembed-, not critical for a current embedding release
Keywords: topembedtopembed-
Target Milestone: mozilla1.0 → mozilla1.0.1
editor embedding not a 1.0 requirement. mozilla1.0-
Keywords: mozilla1.0+mozilla1.0-
changing component so this shows up in Syd's editor embedding queries
Component: Embedding: APIs → Editor: Core
Summary: [embed] Need to design/ implement Editor Embedding APIs → embedding: Need to design/ implement Editor Embedding APIs
resolving as a duplicate of 157128 per editor embedding meeting

*** This bug has been marked as a duplicate of 157128 ***
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → DUPLICATE
verified as dup
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.