Skip to content

Commit 4d79f57

Browse files
committed
Backed out 2 changesets (bug 1633379) for windows build bustages on ContentChild.obj. CLOSED TREE
Backed out changeset a26037f3225b (bug 1633379) Backed out changeset efef0b59bcd8 (bug 1633379)
1 parent fa04312 commit 4d79f57

37 files changed

+263
-468
lines changed

dom/base/ChromeUtils.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#include "mozilla/dom/ContentChild.h"
2727
#include "mozilla/dom/ContentParent.h"
2828
#include "mozilla/dom/IdleDeadline.h"
29-
#include "mozilla/dom/InProcessChild.h"
3029
#include "mozilla/dom/JSActorService.h"
3130
#include "mozilla/dom/MediaControlUtils.h"
3231
#include "mozilla/dom/MediaControlService.h"
@@ -1304,10 +1303,7 @@ void ChromeUtils::GenerateMediaControlKey(const GlobalObject& aGlobal,
13041303
}
13051304

13061305
/* static */
1307-
nsIDOMProcessChild* ChromeUtils::GetDomProcessChild(const GlobalObject&) {
1308-
if (XRE_IsParentProcess()) {
1309-
return InProcessChild::Singleton();
1310-
}
1306+
nsIContentChild* ChromeUtils::GetContentChild(const GlobalObject&) {
13111307
return ContentChild::GetSingleton();
13121308
}
13131309

dom/base/ChromeUtils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include "mozilla/dom/ChromeUtilsBinding.h"
1313
#include "mozilla/ErrorResult.h"
1414
#include "nsDOMNavigationTiming.h" // for DOMHighResTimeStamp
15-
#include "nsIDOMProcessChild.h"
15+
#include "nsIContentChild.h"
1616

1717
namespace mozilla {
1818

@@ -218,7 +218,7 @@ class ChromeUtils {
218218
static void GenerateMediaControlKey(const GlobalObject& aGlobal,
219219
MediaControlKey aKey);
220220

221-
static nsIDOMProcessChild* GetDomProcessChild(const GlobalObject&);
221+
static nsIContentChild* GetContentChild(const GlobalObject&);
222222

223223
// This function would only be used for testing.
224224
static void GetCurrentActiveMediaMetadata(const GlobalObject& aGlobal,

dom/bindings/Bindings.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,8 +1875,8 @@ addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
18751875
notflattened=True)
18761876
addExternalIface('nsISupports', nativeType='nsISupports')
18771877
addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
1878-
addExternalIface('nsIDOMProcessChild', nativeType='nsIDOMProcessChild', notflattened=True)
1879-
addExternalIface('nsIDOMProcessParent', nativeType='nsIDOMProcessParent', notflattened=True)
1878+
addExternalIface('nsIContentChild', nativeType='nsIContentChild', notflattened=True)
1879+
addExternalIface('nsIContentParent', nativeType='nsIContentParent', notflattened=True)
18801880
addExternalIface('nsIReferrerInfo', nativeType='nsIReferrerInfo', notflattened=True)
18811881
addExternalIface('nsISecureBrowserUI', nativeType='nsISecureBrowserUI', notflattened=True)
18821882
addExternalIface('nsIWebProgress', nativeType='nsIWebProgress', notflattened=True)

dom/chrome-webidl/ChromeUtils.webidl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* You can obtain one at http://mozilla.org/MPL/2.0/.
55
*/
66

7-
interface nsIDOMProcessChild;
7+
interface nsIContentChild;
88

99
/**
1010
* An optimized QueryInterface method, generated by generateQI.
@@ -477,10 +477,10 @@ partial namespace ChromeUtils {
477477
void generateMediaControlKey(MediaControlKey aKey);
478478

479479
/**
480-
* nsIDOMProcessChild for the current process.
480+
* ContentChild of the current process.
481481
*/
482482
[ChromeOnly]
483-
readonly attribute nsIDOMProcessChild? domProcessChild;
483+
readonly attribute nsIContentChild? contentChild;
484484

485485
// This is used to get the media metadata from the current main controller in
486486
// testing.

dom/chrome-webidl/JSProcessActor.webidl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ interface JSProcessActorParent {
2020
[ChromeOnly]
2121
constructor();
2222

23-
readonly attribute nsIDOMProcessParent manager;
23+
readonly attribute nsIContentParent manager;
2424
};
2525
JSProcessActorParent includes JSActor;
2626

@@ -29,7 +29,7 @@ interface JSProcessActorChild {
2929
[ChromeOnly]
3030
constructor();
3131

32-
readonly attribute nsIDOMProcessChild manager;
32+
readonly attribute nsIContentChild manager;
3333
};
3434
JSProcessActorChild includes JSActor;
3535

dom/chrome-webidl/WindowGlobalActors.webidl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ interface URI;
88
interface nsIDocShell;
99
interface RemoteTab;
1010
interface nsITransportSecurityInfo;
11-
interface nsIDOMProcessParent;
11+
interface nsIContentParent;
1212

1313
[Exposed=Window, ChromeOnly]
1414
interface WindowContext {
@@ -62,10 +62,9 @@ interface WindowGlobalParent : WindowContext {
6262
// String containing serialized content blocking log.
6363
readonly attribute DOMString contentBlockingLog;
6464

65-
// DOM Process which this window was loaded in. Will be either InProcessParent
66-
// for windows loaded in the parent process, or ContentParent for windows
67-
// loaded in the content process.
68-
readonly attribute nsIDOMProcessParent? domProcess;
65+
// ContentParent of the process this window is loaded in.
66+
// Will be `null` for windows loaded in the parent process.
67+
readonly attribute nsIContentParent? contentParent;
6968

7069
static WindowGlobalParent? getByInnerWindowId(unsigned long long innerWindowId);
7170

dom/docs/Fission.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -583,11 +583,11 @@ Get a JSProcessActor
583583
let parentActor = this.browser
584584
.browsingContext
585585
.currentWindowGlobal
586-
.domProcess
586+
.contentParent
587587
.getActor("TestProcess");
588588
589589
// get child side actor
590-
let childActor = ChromeUtils.domProcessChild
590+
let childActor = ChromeUtils.contentChild
591591
.getActor("TestProcess");
592592
593593
And more

dom/ipc/ContentChild.cpp

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
#include "mozilla/dom/DocGroup.h"
5151
#include "mozilla/dom/ExternalHelperAppChild.h"
5252
#include "mozilla/dom/GetFilesHelper.h"
53-
#include "mozilla/dom/InProcessChild.h"
5453
#include "mozilla/dom/IPCBlobInputStreamChild.h"
5554
#include "mozilla/dom/IPCBlobUtils.h"
5655
#include "mozilla/dom/JSActorService.h"
@@ -79,6 +78,7 @@
7978
#include "mozilla/ipc/FileDescriptorSetChild.h"
8079
#include "mozilla/ipc/FileDescriptorUtils.h"
8180
#include "mozilla/ipc/GeckoChildProcessHost.h"
81+
#include "mozilla/ipc/InProcessChild.h"
8282
#include "mozilla/ipc/LibrarySandboxPreload.h"
8383
#include "mozilla/ipc/ProcessChild.h"
8484
#include "mozilla/ipc/PChildToParentStreamChild.h"
@@ -612,8 +612,8 @@ ContentChild::~ContentChild() {
612612
#endif
613613

614614
NS_INTERFACE_MAP_BEGIN(ContentChild)
615-
NS_INTERFACE_MAP_ENTRY(nsIDOMProcessChild)
616-
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMProcessChild)
615+
NS_INTERFACE_MAP_ENTRY(nsIContentChild)
616+
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIContentChild)
617617
NS_INTERFACE_MAP_END
618618

619619
mozilla::ipc::IPCResult ContentChild::RecvSetXPCOMProcessAttributes(
@@ -4195,24 +4195,58 @@ NS_IMETHODIMP ContentChild::GetActor(const nsACString& aName,
41954195
IPCResult ContentChild::RecvRawMessage(const JSActorMessageMeta& aMeta,
41964196
const ClonedMessageData& aData,
41974197
const ClonedMessageData& aStack) {
4198-
RefPtr<JSProcessActorChild> actor;
4199-
GetActor(aMeta.actorName(), getter_AddRefs(actor));
4200-
if (actor) {
4201-
StructuredCloneData data;
4202-
data.BorrowFromClonedMessageDataForChild(aData);
4203-
StructuredCloneData stack;
4204-
stack.BorrowFromClonedMessageDataForChild(aStack);
4205-
actor->ReceiveRawMessage(aMeta, std::move(data), std::move(stack));
4206-
}
4198+
StructuredCloneData data;
4199+
data.BorrowFromClonedMessageDataForChild(aData);
4200+
StructuredCloneData stack;
4201+
stack.BorrowFromClonedMessageDataForChild(aStack);
4202+
ReceiveRawMessage(aMeta, std::move(data), std::move(stack));
42074203
return IPC_OK();
42084204
}
42094205

4210-
NS_IMETHODIMP ContentChild::GetCanSend(bool* aCanSend) {
4211-
*aCanSend = CanSend();
4212-
return NS_OK;
4206+
void ContentChild::ReceiveRawMessage(const JSActorMessageMeta& aMeta,
4207+
StructuredCloneData&& aData,
4208+
StructuredCloneData&& aStack) {
4209+
RefPtr<JSProcessActorChild> actor =
4210+
GetActor(aMeta.actorName(), IgnoreErrors());
4211+
if (actor) {
4212+
actor->ReceiveRawMessage(aMeta, std::move(aData), std::move(aStack));
4213+
}
42134214
}
42144215

4215-
NS_IMETHODIMP_(ContentChild*) ContentChild::AsContentChild() { return this; }
4216+
already_AddRefed<mozilla::dom::JSProcessActorChild> ContentChild::GetActor(
4217+
const nsACString& aName, ErrorResult& aRv) {
4218+
if (!CanSend()) {
4219+
aRv.ThrowInvalidStateError(
4220+
"Cannot get JSProcessActor, process is shutting down");
4221+
return nullptr;
4222+
}
4223+
4224+
// Check if this actor has already been created, and return it if it has.
4225+
if (mProcessActors.Contains(aName)) {
4226+
return mProcessActors.Get(aName);
4227+
}
4228+
4229+
// Otherwise, we want to create a new instance of this actor.
4230+
JS::RootedObject obj(RootingCx());
4231+
ConstructActor(aName, &obj, aRv);
4232+
if (aRv.Failed()) {
4233+
return nullptr;
4234+
}
4235+
4236+
// Unwrap our actor to a JSProcessActorChild object.
4237+
RefPtr<JSProcessActorChild> actor;
4238+
if (NS_FAILED(UNWRAP_OBJECT(JSProcessActorChild, &obj, actor))) {
4239+
aRv.ThrowTypeMismatchError(
4240+
"Constructed actor does not inherit from JSProcessActorChild");
4241+
return nullptr;
4242+
}
4243+
4244+
MOZ_RELEASE_ASSERT(!actor->Manager(),
4245+
"mManager was already initialized once!");
4246+
actor->Init(aName, this);
4247+
mProcessActors.Put(aName, RefPtr{actor});
4248+
return actor.forget();
4249+
}
42164250

42174251
IPCResult ContentChild::RecvFlushFOGData(FlushFOGDataResolver&& aResolver) {
42184252
#ifdef MOZ_GLEAN

dom/ipc/ContentChild.h

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "mozilla/ipc/InputStreamUtils.h"
2222
#include "mozilla/ipc/Shmem.h"
2323
#include "nsHashKeys.h"
24-
#include "nsIDOMProcessChild.h"
24+
#include "nsIContentChild.h"
2525
#include "nsIObserver.h"
2626
#include "nsTHashtable.h"
2727
#include "nsStringFwd.h"
@@ -42,6 +42,7 @@ struct LookAndFeelInt;
4242
class nsDocShellLoadState;
4343
class nsFrameLoader;
4444
class nsIOpenWindowInfo;
45+
class JSProcessActorChild;
4546

4647
namespace mozilla {
4748
class RemoteSpellcheckEngineChild;
@@ -73,7 +74,7 @@ class GetFilesHelperChild;
7374
class TabContext;
7475

7576
class ContentChild final : public PContentChild,
76-
public nsIDOMProcessChild,
77+
public nsIContentChild,
7778
public mozilla::ipc::IShmemAllocator,
7879
public mozilla::ipc::ChildToParentStreamActorManager,
7980
public ProcessActor {
@@ -84,7 +85,7 @@ class ContentChild final : public PContentChild,
8485
friend class PContentChild;
8586

8687
public:
87-
NS_DECL_NSIDOMPROCESSCHILD
88+
NS_DECL_NSICONTENTCHILD
8889

8990
ContentChild();
9091
virtual ~ContentChild();
@@ -678,6 +679,10 @@ class ContentChild final : public PContentChild,
678679
PFileDescriptorSetChild* SendPFileDescriptorSetConstructor(
679680
const FileDescriptor& aFD) override;
680681

682+
// Get a JS actor object by name.
683+
already_AddRefed<mozilla::dom::JSProcessActorChild> GetActor(
684+
const nsACString& aName, ErrorResult& aRv);
685+
681686
private:
682687
static void ForceKillTimerCallback(nsITimer* aTimer, void* aClosure);
683688
void StartForceKillTimer();
@@ -777,6 +782,10 @@ class ContentChild final : public PContentChild,
777782
const ClonedMessageData& aData,
778783
const ClonedMessageData& aStack);
779784

785+
void ReceiveRawMessage(const JSActorMessageMeta& aMeta,
786+
ipc::StructuredCloneData&& aData,
787+
ipc::StructuredCloneData&& aStack);
788+
780789
JSActor::Type GetSide() override { return JSActor::Type::Child; }
781790

782791
mozilla::ipc::IPCResult RecvHistoryCommitLength(
@@ -883,7 +892,7 @@ class ContentChild final : public PContentChild,
883892
};
884893

885894
inline nsISupports* ToSupports(mozilla::dom::ContentChild* aContentChild) {
886-
return static_cast<nsIDOMProcessChild*>(aContentChild);
895+
return static_cast<nsIContentChild*>(aContentChild);
887896
}
888897

889898
} // namespace dom

dom/ipc/ContentParent.cpp

Lines changed: 52 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3184,13 +3184,13 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(ContentParent)
31843184

31853185
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ContentParent)
31863186
NS_INTERFACE_MAP_ENTRY_CONCRETE(ContentParent)
3187-
NS_INTERFACE_MAP_ENTRY(nsIDOMProcessParent)
3187+
NS_INTERFACE_MAP_ENTRY(nsIContentParent)
31883188
NS_INTERFACE_MAP_ENTRY(nsIObserver)
31893189
NS_INTERFACE_MAP_ENTRY(nsIDOMGeoPositionCallback)
31903190
NS_INTERFACE_MAP_ENTRY(nsIDOMGeoPositionErrorCallback)
31913191
NS_INTERFACE_MAP_ENTRY(nsIAsyncShutdownBlocker)
31923192
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
3193-
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMProcessParent)
3193+
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIContentParent)
31943194
NS_INTERFACE_MAP_END
31953195

31963196
// Async shutdown blocker
@@ -6819,16 +6819,58 @@ NS_IMETHODIMP ContentParent::GetChildID(uint64_t* aOut) {
68196819
IPCResult ContentParent::RecvRawMessage(const JSActorMessageMeta& aMeta,
68206820
const ClonedMessageData& aData,
68216821
const ClonedMessageData& aStack) {
6822-
RefPtr<JSProcessActorParent> actor;
6823-
GetActor(aMeta.actorName(), getter_AddRefs(actor));
6822+
StructuredCloneData data;
6823+
data.BorrowFromClonedMessageDataForParent(aData);
6824+
StructuredCloneData stack;
6825+
stack.BorrowFromClonedMessageDataForParent(aStack);
6826+
ReceiveRawMessage(aMeta, std::move(data), std::move(stack));
6827+
return IPC_OK();
6828+
}
6829+
6830+
void ContentParent::ReceiveRawMessage(const JSActorMessageMeta& aMeta,
6831+
StructuredCloneData&& aData,
6832+
StructuredCloneData&& aStack) {
6833+
RefPtr<JSProcessActorParent> actor =
6834+
GetActor(aMeta.actorName(), IgnoreErrors());
68246835
if (actor) {
6825-
StructuredCloneData data;
6826-
data.BorrowFromClonedMessageDataForParent(aData);
6827-
StructuredCloneData stack;
6828-
stack.BorrowFromClonedMessageDataForParent(aStack);
6829-
actor->ReceiveRawMessage(aMeta, std::move(data), std::move(stack));
6836+
actor->ReceiveRawMessage(aMeta, std::move(aData), std::move(aStack));
68306837
}
6831-
return IPC_OK();
6838+
}
6839+
6840+
already_AddRefed<JSProcessActorParent> ContentParent::GetActor(
6841+
const nsACString& aName, ErrorResult& aRv) {
6842+
if (!CanSend()) {
6843+
aRv.ThrowInvalidStateError(nsPrintfCString(
6844+
"Cannot get actor '%s': content parent is ready to communicate.",
6845+
PromiseFlatCString(aName).get()));
6846+
return nullptr;
6847+
}
6848+
6849+
// Check if this actor has already been created, and return it if it has.
6850+
if (mProcessActors.Contains(aName)) {
6851+
return do_AddRef(mProcessActors.GetWeak(aName));
6852+
}
6853+
6854+
// Otherwise, we want to create a new instance of this actor.
6855+
JS::RootedObject obj(RootingCx());
6856+
ConstructActor(aName, &obj, aRv);
6857+
if (aRv.Failed()) {
6858+
return nullptr;
6859+
}
6860+
6861+
// Unwrap our actor to a JSProcessActorParent object.
6862+
RefPtr<JSProcessActorParent> actor;
6863+
if (NS_FAILED(UNWRAP_OBJECT(JSProcessActorParent, &obj, actor))) {
6864+
aRv.ThrowTypeMismatchError(
6865+
"Constructed actor does not inherit from JSProcessActorParent");
6866+
return nullptr;
6867+
}
6868+
6869+
MOZ_RELEASE_ASSERT(!actor->Manager(),
6870+
"mManager was already initialized once!");
6871+
actor->Init(aName, this);
6872+
mProcessActors.Put(aName, RefPtr{actor});
6873+
return actor.forget();
68326874
}
68336875

68346876
NS_IMETHODIMP ContentParent::GetActor(const nsACString& aName,
@@ -6874,13 +6916,6 @@ IPCResult ContentParent::RecvFOGData(ByteBuf&& buf) {
68746916
return IPC_OK();
68756917
}
68766918

6877-
NS_IMETHODIMP ContentParent::GetCanSend(bool* aCanSend) {
6878-
*aCanSend = CanSend();
6879-
return NS_OK;
6880-
}
6881-
6882-
NS_IMETHODIMP_(ContentParent*) ContentParent::AsContentParent() { return this; }
6883-
68846919
} // namespace dom
68856920
} // namespace mozilla
68866921

0 commit comments

Comments
 (0)