HI,
I am trying to write an extension in c++ ,I want to control firefox
navigation,like Back,load some uri and so on,but I can't find any examples
in google.I wrote some code like this:
part 1:
nsCOMPtr<nsISimpleEnumerator> windowEnumerator;
if(NS_FAILED(mediator->GetEnumerator(nsnull,getter_AddRefs(windowEnumerator))))
{
printf("fail to get window enumerator \n");
}
nsCOMPtr<nsIDOMWindowInternal> domwindow;
mediator->GetMostRecentWindow(nsnull,getter_AddRefs(domwindow));
nsCOMPtr<nsIDOMHistory> history;
rv=topwindow->GetHistory(getter_AddRefs(history));
if(!NS_FAILED(rv))
{
rv=history->Back();
if(NS_FAILED(rv))
{
printf("Open failed 0x%08x\n",rv);
}
}
else
printf("history is null\n");
part2:
nsCOMPtr<nsISimpleEnumerator> windowEnumerator;
if(NS_FAILED(mediator->GetEnumerator(nsnull,getter_AddRefs(windowEnumerator))))
{
printf("fail to get window enumerator \n");
}
nsCOMPtr<nsIDOMWindowInternal> domwindow;
mediator->GetMostRecentWindow(nsnull,getter_AddRefs(domwindow));
nsCOMPtr<nsIScriptGlobalObject> globalObject =
do_QueryInterface(domwindow);
if(!globalObject)
{
printf("error query
nsIScriptGlobalObject\n");
}
nsCOMPtr<nsIDocShell>aDocShell =
globalObject->GetDocShell();
if(aDocShell)
getter_AddRefs(aDocShell);
else
printf("get nsIDocShell object fail\n");
nsCOMPtr<nsIWebNavigation>
nav=do_QueryInterface(domwindow);
if(!nav)
{
printf("error query
nsIWebNavigation\n");
continue;
}
getter_AddRefs(nav);
nsCOMPtr<nsIDocShellTreeItem>
itemlist=do_QueryInterface(nav);
if(!itemlist)
{
printf("error query nsIDocShellItem\n");
continue ;
}
getter_AddRefs(itemlist);
nsCOMPtr<nsIDocShellTreeItem> rootItem;
rv=itemlist->GetRootTreeItem(getter_AddRefs(rootItem));
if(NS_FAILED(rv))
{
printf("error getRootTreeItem
0x%08x\n",rv);
continue;
}
nsCOMPtr<nsIDOMWindow> lastWindow
=do_QueryInterface(rootItem);
if(!lastWindow)
{
printf("error get lastWindow\n");
continue;
}
getter_AddRefs(lastWindow);
nsCOMPtr<nsIDOMChromeWindow>
chromeWindow(do_QueryInterface(domwindow));
if(!chromeWindow)
{
printf("error get chrome window\n");
continue;
}
printf("after get chromeWindow \n");
getter_AddRefs(chromeWindow);
nsCOMPtr<nsIBrowserDOMWindow> browser;
rv=chromeWindow->GetBrowserDOMWindow(getter_AddRefs(browser));
if(NS_FAILED(rv))
{
printf("error get nsIBrowserDOMWindow
0x%08x\n",rv);
continue;
}
printf("after getBrowserDOMWindow\n");
if(!browser)
{
printf("can't get
nsIBrowserDOMWindow\n");
break;
}
nsCOMPtr<nsIDOMWindow> newwindow;
rv=browser->OpenURI(nsnull,nsnull,nsIBrowserDOMWindow::OPEN_NEWTAB,nsIBrowserDOMWindow::OPEN_NEW,getter_AddRefs(newwindow));
neither worked;
system is linux,firefox version is 2.0.
I realy eager to resove this problem,any suggestion will be helpful
thanks;
mac
kemp video
_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom