зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1452321. Remove nsIWebBrowserPersistable. r=mystor
MozReview-Commit-ID: CCw86gAtKn3
This commit is contained in:
Родитель
1c287692f6
Коммит
eb5f28a236
|
@ -157,8 +157,8 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsFrameLoader)
|
||||||
// from nsISupports* to nsFrameLoader* and end up with |this|.
|
// from nsISupports* to nsFrameLoader* and end up with |this|.
|
||||||
foundInterface = reinterpret_cast<nsISupports*>(this);
|
foundInterface = reinterpret_cast<nsISupports*>(this);
|
||||||
} else
|
} else
|
||||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserPersistable)
|
NS_INTERFACE_MAP_ENTRY(nsIMutationObserver)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIWebBrowserPersistable)
|
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
||||||
NS_INTERFACE_MAP_END
|
NS_INTERFACE_MAP_END
|
||||||
|
|
||||||
nsFrameLoader::nsFrameLoader(Element* aOwner, nsPIDOMWindowOuter* aOpener,
|
nsFrameLoader::nsFrameLoader(Element* aOwner, nsPIDOMWindowOuter* aOpener,
|
||||||
|
@ -3230,22 +3230,11 @@ nsFrameLoader::StartPersistence(uint64_t aOuterWindowID,
|
||||||
nsIWebBrowserPersistDocumentReceiver* aRecv,
|
nsIWebBrowserPersistDocumentReceiver* aRecv,
|
||||||
ErrorResult& aRv)
|
ErrorResult& aRv)
|
||||||
{
|
{
|
||||||
nsresult rv = StartPersistence(aOuterWindowID, aRecv);
|
MOZ_ASSERT(aRecv);
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
aRv.Throw(rv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsFrameLoader::StartPersistence(uint64_t aOuterWindowID,
|
|
||||||
nsIWebBrowserPersistDocumentReceiver* aRecv)
|
|
||||||
{
|
|
||||||
if (!aRecv) {
|
|
||||||
return NS_ERROR_INVALID_POINTER;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mRemoteBrowser) {
|
if (mRemoteBrowser) {
|
||||||
return mRemoteBrowser->StartPersistence(aOuterWindowID, aRecv);
|
mRemoteBrowser->StartPersistence(aOuterWindowID, aRecv, aRv);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIDocument> rootDoc =
|
nsCOMPtr<nsIDocument> rootDoc =
|
||||||
|
@ -3264,7 +3253,6 @@ nsFrameLoader::StartPersistence(uint64_t aOuterWindowID,
|
||||||
new mozilla::WebBrowserPersistLocalDocument(foundDoc);
|
new mozilla::WebBrowserPersistLocalDocument(foundDoc);
|
||||||
aRecv->OnDocumentReady(pdoc);
|
aRecv->OnDocumentReady(pdoc);
|
||||||
}
|
}
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include "mozilla/Attributes.h"
|
#include "mozilla/Attributes.h"
|
||||||
#include "nsStubMutationObserver.h"
|
#include "nsStubMutationObserver.h"
|
||||||
#include "Units.h"
|
#include "Units.h"
|
||||||
#include "nsIWebBrowserPersistable.h"
|
|
||||||
#include "nsIFrame.h"
|
#include "nsIFrame.h"
|
||||||
#include "nsPluginTags.h"
|
#include "nsPluginTags.h"
|
||||||
|
|
||||||
|
@ -41,6 +40,7 @@ class nsIDocShellTreeOwner;
|
||||||
class nsILoadContext;
|
class nsILoadContext;
|
||||||
class nsIMessageSender;
|
class nsIMessageSender;
|
||||||
class nsIPrintSettings;
|
class nsIPrintSettings;
|
||||||
|
class nsIWebBrowserPersistDocumentReceiver;
|
||||||
class nsIWebProgressListener;
|
class nsIWebProgressListener;
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
@ -76,8 +76,7 @@ typedef struct _GtkWidget GtkWidget;
|
||||||
{ 0x297fd0ea, 0x1b4a, 0x4c9a, \
|
{ 0x297fd0ea, 0x1b4a, 0x4c9a, \
|
||||||
{ 0xa4, 0x04, 0xe5, 0x8b, 0xe8, 0x95, 0x10, 0x50 } }
|
{ 0xa4, 0x04, 0xe5, 0x8b, 0xe8, 0x95, 0x10, 0x50 } }
|
||||||
|
|
||||||
class nsFrameLoader final : public nsIWebBrowserPersistable,
|
class nsFrameLoader final : public nsStubMutationObserver,
|
||||||
public nsStubMutationObserver,
|
|
||||||
public mozilla::dom::ipc::MessageManagerCallback,
|
public mozilla::dom::ipc::MessageManagerCallback,
|
||||||
public nsWrapperCache
|
public nsWrapperCache
|
||||||
{
|
{
|
||||||
|
@ -96,10 +95,9 @@ public:
|
||||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_FRAMELOADER_IID)
|
NS_DECLARE_STATIC_IID_ACCESSOR(NS_FRAMELOADER_IID)
|
||||||
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsFrameLoader,
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsFrameLoader)
|
||||||
nsIWebBrowserPersistable)
|
|
||||||
NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
|
NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
|
||||||
NS_DECL_NSIWEBBROWSERPERSISTABLE
|
|
||||||
nsresult CheckForRecursiveLoad(nsIURI* aURI);
|
nsresult CheckForRecursiveLoad(nsIURI* aURI);
|
||||||
nsresult ReallyStartLoading();
|
nsresult ReallyStartLoading();
|
||||||
void StartDestroy();
|
void StartDestroy();
|
||||||
|
@ -511,7 +509,7 @@ NS_DEFINE_STATIC_IID_ACCESSOR(nsFrameLoader, NS_FRAMELOADER_IID)
|
||||||
inline nsISupports*
|
inline nsISupports*
|
||||||
ToSupports(nsFrameLoader* aFrameLoader)
|
ToSupports(nsFrameLoader* aFrameLoader)
|
||||||
{
|
{
|
||||||
return static_cast<nsIWebBrowserPersistable*>(aFrameLoader);
|
return aFrameLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -136,8 +136,7 @@ NS_IMPL_ISUPPORTS(TabParent,
|
||||||
nsITabParent,
|
nsITabParent,
|
||||||
nsIAuthPromptProvider,
|
nsIAuthPromptProvider,
|
||||||
nsISecureBrowserUI,
|
nsISecureBrowserUI,
|
||||||
nsISupportsWeakReference,
|
nsISupportsWeakReference)
|
||||||
nsIWebBrowserPersistable)
|
|
||||||
|
|
||||||
TabParent::TabParent(nsIContentParent* aManager,
|
TabParent::TabParent(nsIContentParent* aManager,
|
||||||
const TabId& aTabId,
|
const TabId& aTabId,
|
||||||
|
@ -3437,19 +3436,23 @@ TabParent::AsyncPanZoomEnabled() const
|
||||||
return widget && widget->AsyncPanZoomEnabled();
|
return widget && widget->AsyncPanZoomEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
void
|
||||||
TabParent::StartPersistence(uint64_t aOuterWindowID,
|
TabParent::StartPersistence(uint64_t aOuterWindowID,
|
||||||
nsIWebBrowserPersistDocumentReceiver* aRecv)
|
nsIWebBrowserPersistDocumentReceiver* aRecv,
|
||||||
|
ErrorResult& aRv)
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsIContentParent> manager = Manager();
|
nsCOMPtr<nsIContentParent> manager = Manager();
|
||||||
if (!manager->IsContentParent()) {
|
if (!manager->IsContentParent()) {
|
||||||
return NS_ERROR_UNEXPECTED;
|
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
auto* actor = new WebBrowserPersistDocumentParent();
|
auto* actor = new WebBrowserPersistDocumentParent();
|
||||||
actor->SetOnReady(aRecv);
|
actor->SetOnReady(aRecv);
|
||||||
return manager->AsContentParent()
|
bool ok = manager->AsContentParent()
|
||||||
->SendPWebBrowserPersistDocumentConstructor(actor, this, aOuterWindowID)
|
->SendPWebBrowserPersistDocumentConstructor(actor, this, aOuterWindowID);
|
||||||
? NS_OK : NS_ERROR_FAILURE;
|
if (!ok) {
|
||||||
|
aRv.Throw(NS_ERROR_FAILURE);
|
||||||
|
}
|
||||||
// (The actor will be destroyed on constructor failure.)
|
// (The actor will be destroyed on constructor failure.)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include "nsIKeyEventInPluginCallback.h"
|
#include "nsIKeyEventInPluginCallback.h"
|
||||||
#include "nsISecureBrowserUI.h"
|
#include "nsISecureBrowserUI.h"
|
||||||
#include "nsITabParent.h"
|
#include "nsITabParent.h"
|
||||||
#include "nsIWebBrowserPersistable.h"
|
|
||||||
#include "nsIXULBrowserWindow.h"
|
#include "nsIXULBrowserWindow.h"
|
||||||
#include "nsRefreshDriver.h"
|
#include "nsRefreshDriver.h"
|
||||||
#include "nsWeakReference.h"
|
#include "nsWeakReference.h"
|
||||||
|
@ -40,6 +39,7 @@ class nsIPrincipal;
|
||||||
class nsIURI;
|
class nsIURI;
|
||||||
class nsILoadContext;
|
class nsILoadContext;
|
||||||
class nsIDocShell;
|
class nsIDocShell;
|
||||||
|
class nsIWebBrowserPersistDocumentReceiver;
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|
||||||
|
@ -87,7 +87,6 @@ class TabParent final : public PBrowserParent
|
||||||
, public nsIKeyEventInPluginCallback
|
, public nsIKeyEventInPluginCallback
|
||||||
, public nsSupportsWeakReference
|
, public nsSupportsWeakReference
|
||||||
, public TabContext
|
, public TabContext
|
||||||
, public nsIWebBrowserPersistable
|
|
||||||
, public LiveResizeListener
|
, public LiveResizeListener
|
||||||
{
|
{
|
||||||
typedef mozilla::dom::ClonedMessageData ClonedMessageData;
|
typedef mozilla::dom::ClonedMessageData ClonedMessageData;
|
||||||
|
@ -490,7 +489,10 @@ public:
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
NS_DECL_NSIAUTHPROMPTPROVIDER
|
NS_DECL_NSIAUTHPROMPTPROVIDER
|
||||||
NS_DECL_NSISECUREBROWSERUI
|
NS_DECL_NSISECUREBROWSERUI
|
||||||
NS_DECL_NSIWEBBROWSERPERSISTABLE
|
|
||||||
|
void StartPersistence(uint64_t aOuterWindowID,
|
||||||
|
nsIWebBrowserPersistDocumentReceiver* aRecv,
|
||||||
|
ErrorResult& aRv);
|
||||||
|
|
||||||
bool HandleQueryContentEvent(mozilla::WidgetQueryContentEvent& aEvent);
|
bool HandleQueryContentEvent(mozilla::WidgetQueryContentEvent& aEvent);
|
||||||
|
|
||||||
|
|
|
@ -329,7 +329,9 @@ ResourceReader::OnWalkSubframe(nsIDOMNode* aNode)
|
||||||
// Pass in 0 as the outer window ID so that we start
|
// Pass in 0 as the outer window ID so that we start
|
||||||
// persisting the root of this subframe, and not some other
|
// persisting the root of this subframe, and not some other
|
||||||
// subframe child of this subframe.
|
// subframe child of this subframe.
|
||||||
nsresult rv = loader->StartPersistence(0, this);
|
ErrorResult err;
|
||||||
|
loader->StartPersistence(0, this, err);
|
||||||
|
nsresult rv = err.StealNSResult();
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
if (rv == NS_ERROR_NO_CONTENT) {
|
if (rv == NS_ERROR_NO_CONTENT) {
|
||||||
// Just ignore frames with no content document.
|
// Just ignore frames with no content document.
|
||||||
|
|
|
@ -11,7 +11,6 @@ with Files("**"):
|
||||||
XPIDL_SOURCES += [
|
XPIDL_SOURCES += [
|
||||||
'nsCWebBrowserPersist.idl',
|
'nsCWebBrowserPersist.idl',
|
||||||
'nsIWebBrowserPersist.idl',
|
'nsIWebBrowserPersist.idl',
|
||||||
'nsIWebBrowserPersistable.idl',
|
|
||||||
'nsIWebBrowserPersistDocument.idl',
|
'nsIWebBrowserPersistDocument.idl',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -248,7 +248,7 @@ interface nsIWebBrowserPersist : nsICancelable
|
||||||
* specified by the encoding flags.
|
* specified by the encoding flags.
|
||||||
*
|
*
|
||||||
* @see nsIWebBrowserPersistDocument
|
* @see nsIWebBrowserPersistDocument
|
||||||
* @see nsIWebBrowserPersistable
|
* @see WebBrowserPersistable
|
||||||
* @see nsIFile
|
* @see nsIFile
|
||||||
* @see nsIURI
|
* @see nsIURI
|
||||||
*
|
*
|
||||||
|
|
|
@ -187,7 +187,10 @@ interface nsIWebBrowserPersistWriteCompletion : nsISupports
|
||||||
* Asynchronous callback for creating a persistable document from some
|
* Asynchronous callback for creating a persistable document from some
|
||||||
* other object.
|
* other object.
|
||||||
*
|
*
|
||||||
* @see nsIWebBrowserPersistable.
|
* XXXbz This should really be changed to just return a promise that
|
||||||
|
* then gets resolved or rejected...
|
||||||
|
*
|
||||||
|
* @see WebBrowserPersistable in FrameLoader.webidl.
|
||||||
*/
|
*/
|
||||||
[scriptable, uuid(321e3174-594f-4036-b7be-791b821bd376)]
|
[scriptable, uuid(321e3174-594f-4036-b7be-791b821bd376)]
|
||||||
interface nsIWebBrowserPersistDocumentReceiver : nsISupports
|
interface nsIWebBrowserPersistDocumentReceiver : nsISupports
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/* -*- Mode: IDL; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
#include "nsISupports.idl"
|
|
||||||
|
|
||||||
interface nsIWebBrowserPersistDocumentReceiver;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface for objects which represent a document that can be
|
|
||||||
* serialized with nsIWebBrowserPersist. This interface is
|
|
||||||
* asynchronous because the actual document can be in another process
|
|
||||||
* (e.g., if this object is an nsFrameLoader for an out-of-process
|
|
||||||
* frame).
|
|
||||||
*
|
|
||||||
* Warning: this is currently implemented only by nsFrameLoader, and
|
|
||||||
* may change in the future to become more frame-loader-specific or be
|
|
||||||
* merged into nsFrameLoader. See bug 1101100 comment #34.
|
|
||||||
*
|
|
||||||
* @see nsIWebBrowserPersistDocumentReceiver
|
|
||||||
* @see nsIWebBrowserPersistDocument
|
|
||||||
* @see nsIWebBrowserPersist
|
|
||||||
*
|
|
||||||
* @param aOuterWindowID
|
|
||||||
* The outer window ID of the subframe we'd like to persist.
|
|
||||||
* If set at 0, nsIWebBrowserPersistable will attempt to persist
|
|
||||||
* the top-level document. If the outer window ID is for a subframe
|
|
||||||
* that does not exist, or is not held beneath the nsIWebBrowserPersistable,
|
|
||||||
* aRecv's onError method will be called with NS_ERROR_NO_CONTENT.
|
|
||||||
* @param aRecv
|
|
||||||
* The nsIWebBrowserPersistDocumentReceiver is a callback that
|
|
||||||
* will be fired once the document is ready for persisting.
|
|
||||||
*/
|
|
||||||
[uuid(f4c3fa8e-83e9-49f8-ac6f-951fc7541fe4)]
|
|
||||||
interface nsIWebBrowserPersistable : nsISupports
|
|
||||||
{
|
|
||||||
void startPersistence(in unsigned long long aOuterWindowID,
|
|
||||||
in nsIWebBrowserPersistDocumentReceiver aRecv);
|
|
||||||
};
|
|
|
@ -55,7 +55,6 @@
|
||||||
#include "nsIStringBundle.h"
|
#include "nsIStringBundle.h"
|
||||||
#include "nsIProtocolHandler.h"
|
#include "nsIProtocolHandler.h"
|
||||||
|
|
||||||
#include "nsIWebBrowserPersistable.h"
|
|
||||||
#include "nsWebBrowserPersist.h"
|
#include "nsWebBrowserPersist.h"
|
||||||
#include "WebBrowserPersistLocalDocument.h"
|
#include "WebBrowserPersistLocalDocument.h"
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,29 @@ interface FrameLoader {
|
||||||
readonly attribute boolean isDead;
|
readonly attribute boolean isDead;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for objects which represent a document that can be
|
||||||
|
* serialized with nsIWebBrowserPersist. This interface is
|
||||||
|
* asynchronous because the actual document can be in another process
|
||||||
|
* (e.g., if this object is a FrameLoader for an out-of-process
|
||||||
|
* frame).
|
||||||
|
*
|
||||||
|
* XXXbz This method should really just return a Promise...
|
||||||
|
*
|
||||||
|
* @see nsIWebBrowserPersistDocumentReceiver
|
||||||
|
* @see nsIWebBrowserPersistDocument
|
||||||
|
* @see nsIWebBrowserPersist
|
||||||
|
*
|
||||||
|
* @param aOuterWindowID
|
||||||
|
* The outer window ID of the subframe we'd like to persist.
|
||||||
|
* If set at 0, WebBrowserPersistable will attempt to persist
|
||||||
|
* the top-level document. If the outer window ID is for a subframe
|
||||||
|
* that does not exist, or is not held beneath the WebBrowserPersistable,
|
||||||
|
* aRecv's onError method will be called with NS_ERROR_NO_CONTENT.
|
||||||
|
* @param aRecv
|
||||||
|
* The nsIWebBrowserPersistDocumentReceiver is a callback that
|
||||||
|
* will be fired once the document is ready for persisting.
|
||||||
|
*/
|
||||||
[NoInterfaceObject]
|
[NoInterfaceObject]
|
||||||
interface WebBrowserPersistable
|
interface WebBrowserPersistable
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,8 +11,7 @@ function one_test(delay, continuation) {
|
||||||
BrowserTestUtils.openNewForegroundTab(gBrowser, testPageURL).then((tab) => {
|
BrowserTestUtils.openNewForegroundTab(gBrowser, testPageURL).then((tab) => {
|
||||||
browser = tab.linkedBrowser;
|
browser = tab.linkedBrowser;
|
||||||
let persistable = browser.QueryInterface(Ci.nsIFrameLoaderOwner)
|
let persistable = browser.QueryInterface(Ci.nsIFrameLoaderOwner)
|
||||||
.frameLoader
|
.frameLoader;
|
||||||
.QueryInterface(Ci.nsIWebBrowserPersistable);
|
|
||||||
persistable.startPersistence(/* outer window ID: */ 0, {
|
persistable.startPersistence(/* outer window ID: */ 0, {
|
||||||
onDocumentReady,
|
onDocumentReady,
|
||||||
onError(status) {
|
onError(status) {
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include "nsIMessageManager.h"
|
#include "nsIMessageManager.h"
|
||||||
#include "nsISelection.h"
|
#include "nsISelection.h"
|
||||||
#include "nsITreeBoxObject.h"
|
#include "nsITreeBoxObject.h"
|
||||||
#include "nsIWebBrowserPersistable.h"
|
|
||||||
|
|
||||||
#include "mozilla/dom/CSSPrimitiveValueBinding.h"
|
#include "mozilla/dom/CSSPrimitiveValueBinding.h"
|
||||||
#include "mozilla/dom/CSSStyleDeclarationBinding.h"
|
#include "mozilla/dom/CSSStyleDeclarationBinding.h"
|
||||||
|
@ -39,7 +38,6 @@
|
||||||
#include "mozilla/dom/ElementBinding.h"
|
#include "mozilla/dom/ElementBinding.h"
|
||||||
#include "mozilla/dom/EventBinding.h"
|
#include "mozilla/dom/EventBinding.h"
|
||||||
#include "mozilla/dom/EventTargetBinding.h"
|
#include "mozilla/dom/EventTargetBinding.h"
|
||||||
#include "mozilla/dom/FrameLoaderBinding.h"
|
|
||||||
#include "mozilla/dom/HTMLAnchorElementBinding.h"
|
#include "mozilla/dom/HTMLAnchorElementBinding.h"
|
||||||
#include "mozilla/dom/HTMLAreaElementBinding.h"
|
#include "mozilla/dom/HTMLAreaElementBinding.h"
|
||||||
#include "mozilla/dom/HTMLButtonElementBinding.h"
|
#include "mozilla/dom/HTMLButtonElementBinding.h"
|
||||||
|
@ -138,7 +136,6 @@ const ComponentsInterfaceShimEntry kComponentsInterfaceShimMap[] =
|
||||||
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMParser, DOMParser),
|
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMParser, DOMParser),
|
||||||
DEFINE_SHIM(Range),
|
DEFINE_SHIM(Range),
|
||||||
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsITreeBoxObject, TreeBoxObject),
|
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsITreeBoxObject, TreeBoxObject),
|
||||||
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIWebBrowserPersistable, FrameLoader),
|
|
||||||
DEFINE_SHIM(XMLDocument),
|
DEFINE_SHIM(XMLDocument),
|
||||||
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsISelection, Selection),
|
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsISelection, Selection),
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче