andrej wrote:
> The project I'm working on is using Gecko without a UI. The core of
> the app
> does the following:
>
>
> NS_InitXPCOM3(nsnull, nsnull, dirProvider, sCombined,
> combinedCount);
> ...
> nsCOMPtr<nsIDocShell> mDocShell;
> mDocShell = do_CreateInstance("@mozilla.org/webshell;1");
> NS_ENSURE_TRUE(mDocShell, NS_ERROR_FAILURE);
> ...
> nsIThread *thread = NS_GetCurrentThread();
> while (true) {
> PRBool processedEvent;
> rv = thread->ProcessNextEvent(PR_TRUE, &processedEvent);
> }
>
>
> There's also a javascript component that listens for commands over a
> socket
> channel. It uses @mozilla.org/webshell;1 to control loading of pages
> and accessing
> the dom.
>
> For simple things it works fine: I can fetch a document given a URL,
> search for elements by id, name, xpath, and enter text into text and
> textarea
> nodes. Since it avoids loading of images, css, and skips layout and
> rendering,
> it's pretty fast. So far so good.
>
> However, when I call element.click() on an input node of type submit,
> nothing
> happens. From debugging I find that it's not working because there's
> no
> psIPrefContext and no psPrefShell. I.e. HTMLInputElement has the
> following:
>
> NS_IMETHODIMP
> nsHTMLInputElement::Click()
> {
> ...
> nsIPresShell *shell = doc->GetPrimaryShell();
>
> if (shell) {
> nsCOMPtr<nsPresContext> context = shell->GetPresContext();
>
> if (context) {
> ...
> nsEventDispatcher::Dispatch(static_cast<nsIContent*>(this),
> context,
> &event, nsnull, &status);
>
> ...
> }
> }
> }
>
> Since shell is null, the event is not dispatched.
>
> What's a good way to resolve this?
Jaxer project http://www.aptana.com/jaxer is probably doing what you are
trying to achieve.
I'll be great, if you could post back with your findings ;)
--
Sergey Yanovich
Abstract Accounting Ltd.
http://aasii.org/
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding