Skip to content
Snippets Groups Projects
  • matc's avatar
    c9300fab
    Bug 1786048 - Part 3: Merge nsIEmbeddingSiteWindow into nsIBaseWindow. r=emilio · c9300fab
    matc authored
    Implementations of nsIEmbeddingSiteWindow and nsIBaseWindow largely
    overlap, and where they don't, the nsIEmbeddingSiteWindow implementation
    of the otherwise shared interface is primarily stubbed out with the
    exception of Get/SetDimensions().
    
    This patch moves a reimplementation of Get/SetDimensions() from
    nsIEmbeddingSiteWindow to nsIBaseWindow. The other methods of
    nsIEmbeddingSiteWindow remain covered by nsIBaseWindow.
    Get/SetDimensions() can be implemented as part of nsIWebBrowserChrome
    where nsIBaseWindow is not necessary. This removes the need for
    nsIEmbeddingSiteWindow.
    
    Blur() has also been moved to nsIWebBrowserChrome, as only
    nsContentTreeOwner has an actual implementation which we in theory also
    want to call from BrowserChild/Parent, but the spec suggests to
    "selectively or uniformly ignore calls".
    
    GetVisibility() had an implementation in BrowserChild that pretended to
    always be visible. Instead of providing an interface for that,
    nsDocShell now handles the not implemented case for tree owners.
    
    nsIEmbeddingSiteWindow::GetSiteWindow() used to call through to
    nsIBaseWindow::GetParentNativeWindow().
    
    The Get/SetDimensions() implementation has been replaced with a strongly
    typed setter, which is now also used directly from nsGlobalWindowOuter
    to avoid problems that come with autodetecting unchanged dimensions,
    when the current dimensions are outdated (e.g. immediately reverting a
    change can be ignored).
    
    Differential Revision: https://phabricator.services.mozilla.com/D160260
    c9300fab
    History
    Bug 1786048 - Part 3: Merge nsIEmbeddingSiteWindow into nsIBaseWindow. r=emilio
    matc authored
    Implementations of nsIEmbeddingSiteWindow and nsIBaseWindow largely
    overlap, and where they don't, the nsIEmbeddingSiteWindow implementation
    of the otherwise shared interface is primarily stubbed out with the
    exception of Get/SetDimensions().
    
    This patch moves a reimplementation of Get/SetDimensions() from
    nsIEmbeddingSiteWindow to nsIBaseWindow. The other methods of
    nsIEmbeddingSiteWindow remain covered by nsIBaseWindow.
    Get/SetDimensions() can be implemented as part of nsIWebBrowserChrome
    where nsIBaseWindow is not necessary. This removes the need for
    nsIEmbeddingSiteWindow.
    
    Blur() has also been moved to nsIWebBrowserChrome, as only
    nsContentTreeOwner has an actual implementation which we in theory also
    want to call from BrowserChild/Parent, but the spec suggests to
    "selectively or uniformly ignore calls".
    
    GetVisibility() had an implementation in BrowserChild that pretended to
    always be visible. Instead of providing an interface for that,
    nsDocShell now handles the not implemented case for tree owners.
    
    nsIEmbeddingSiteWindow::GetSiteWindow() used to call through to
    nsIBaseWindow::GetParentNativeWindow().
    
    The Get/SetDimensions() implementation has been replaced with a strongly
    typed setter, which is now also used directly from nsGlobalWindowOuter
    to avoid problems that come with autodetecting unchanged dimensions,
    when the current dimensions are outdated (e.g. immediately reverting a
    change can be ignored).
    
    Differential Revision: https://phabricator.services.mozilla.com/D160260