Closed Bug 77750 Opened 23 years ago Closed 23 years ago

nsIWebNavigation needs to accept a window target as a param.

Categories

(Core Graveyard :: Embedding: APIs, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED INVALID
mozilla0.9.1

People

(Reporter: jud, Assigned: rpotts)

References

Details

In order for "open in new window" menu selection to work in embedded apps, 
nsIWebNavigation needs a new LoadURI method that allows the caller to specify 
window targets. "_new" would be used to indicate a new window would be opened. 
This would take the burden of creating a new window by hand off of the 
embeddor/caller, and allow Gecko to properly target windows for content 
delivery.
Target Milestone: --- → mozilla0.9.1
Depends on: 65777
I'm beginning to wonder if it wouldn't be better to just use the WindowWatcher
service when a URI needs to be loaded into a new window...

By using nsIWindowWatcher, we avoid changing the semantics of the
nsIWebNavigation interface - which currently ALWAYS operates on a particular
webBrowser instance...

The only thing that we lose is the ability to specify load flags...

Below is a code snippet that demonstrates how the Window Watcher could be used.

    // This code snipped assumes the following:
    //   * webBrowser points to an instance of the nsIWebBrowser
    //     interface...
    //
    //   * uriString contains the string value of the URI to be
    //     loaded...
    //
    nsresult rv;
    nsCOMPtr<nsIWindowWatcher> ww;
    nsCOMPtr<nsIDOMWindow> newWindow;
    nsCOMPtr<nsIDOMWindow> parentWindow;

    ww = do_GetService(NS_WINDOWWATCHER_CONTRACTID, &rv);
    if (NS_FAILED(rv)) return rv;

    rv = webBrowser->GetContentWindow(getter_AddRefs(parentWindow));
    if (NS_FAILED(rv)) return rv;

    rv = ww->OpenWindow(parentWindow                // DOM window parent
                        uriString,                  // URL to load
                        "_new",                     // Window name
                        nsnull,                     // Window features
                        nsnull,                     // Extra arguments
                        getter_AddRefs(newWindow));

this sounds reasonable to me, could the load flags be added to the nsISupports
argument list though?
Currently, the ISupports argument list is converted into a jsval array...  So
that  OpenWindowJS(...) can be used.

Currently, the WindowWatcher loads all URIs with LOAD_NORMAL attributes...  I
guess the real issue is whether we would ever need different attributes.

I guess that if different attributes were required, the WindowWatcher could
still be used to get/create the new window.  However, if no URIString were
passed in, the nsIDOMWindow that was returned could be used to get the
corrosponding nsIWebNavigation interface - where the load attributes could be
specified.

Since there is an alternative way, I'm leaning toward futuring (or invalidating)
this bug for now...

What do people think?
-- rick
I'm resolving this as invalid after talking with jud :-)  Since there is an
existing way to do this - lets not worry about it!

-- rick
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → INVALID
verifying.
Status: RESOLVED → VERIFIED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.