Attachment #8731371: Part 5: SyncService for bug #1217544

View | Details | Raw Unified | Return to bug 1217544
Collapse All | Expand All

(-)a/dom/sync/SyncManagerParent.cpp (-1 / +19 lines)
Line     Link Here 
 Lines 1-49    Link Here 
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
5
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
6
7
#include "SyncManagerParent.h"
7
#include "SyncManagerParent.h"
8
#include "SyncService.h"
8
9
9
#include "mozilla/unused.h"
10
#include "mozilla/unused.h"
10
#include "mozilla/ipc/BackgroundParent.h"
11
#include "mozilla/ipc/BackgroundParent.h"
11
12
12
namespace mozilla {
13
namespace mozilla {
13
14
14
using namespace ipc;
15
using namespace ipc;
15
16
16
namespace dom {
17
namespace dom {
17
18
18
SyncManagerParent::SyncManagerParent()
19
SyncManagerParent::SyncManagerParent()
20
  : mService(SyncService::GetOrCreate())
19
{
21
{
20
  AssertIsOnBackgroundThread();
22
  AssertIsOnBackgroundThread();
23
  mService->RegisterActor(this);
21
}
24
}
22
25
23
SyncManagerParent::~SyncManagerParent()
26
SyncManagerParent::~SyncManagerParent()
24
{
27
{
25
  AssertIsOnBackgroundThread();
28
  AssertIsOnBackgroundThread();
26
}
29
}
27
30
28
void SyncManagerParent::ActorDestroy(ActorDestroyReason aWhy)
31
void SyncManagerParent::ActorDestroy(ActorDestroyReason aWhy)
29
{
32
{
30
  AssertIsOnBackgroundThread();
33
  AssertIsOnBackgroundThread();
34
35
  if (mService) {
36
    mService->UnregisterActor(this);
37
  }
31
}
38
}
32
39
33
bool SyncManagerParent::RecvRequest(const nsID& aRequestId,
40
bool SyncManagerParent::RecvRequest(const nsID& aRequestId,
34
                                    const SyncOp& aOp)
41
                                    const SyncOp& aOp)
35
{
42
{
36
  AssertIsOnBackgroundThread();
43
  AssertIsOnBackgroundThread();
37
44
45
  if (NS_WARN_IF(!mService)) {
46
    return false;
47
  }
48
38
  switch(aOp.mArgs().type()) {
49
  switch(aOp.mArgs().type()) {
39
    case SyncOpArgs::TSyncRegisterArgs:
50
    case SyncOpArgs::TSyncRegisterArgs:
40
    {
51
    {
41
      // XXX Do registration.
52
      // XXX this needs to be async
53
      mService->Register(aOp.mPrincipal(),
54
          aOp.mArgs().get_SyncRegisterArgs().mScope(),
55
          aOp.mArgs().get_SyncRegisterArgs().mTag());
42
      const SyncRegisterResponse response(true);
56
      const SyncRegisterResponse response(true);
43
      //const SyncOpError response(static_cast<uint32_t>(NS_ERROR_FAILURE));
57
      //const SyncOpError response(static_cast<uint32_t>(NS_ERROR_FAILURE));
44
      Unused << SendResponse(aRequestId, response);
58
      Unused << SendResponse(aRequestId, response);
45
      break;
59
      break;
46
    }
60
    }
47
    case SyncOpArgs::TSyncGetTagsArgs:
61
    case SyncOpArgs::TSyncGetTagsArgs:
48
    {
62
    {
49
      //XXX Do GetTags.
63
      //XXX Do GetTags.
 Lines 59-73   bool SyncManagerParent::RecvRequest(cons Link Here 
59
  }
73
  }
60
  return true;
74
  return true;
61
}
75
}
62
76
63
bool SyncManagerParent::RecvShutdown()
77
bool SyncManagerParent::RecvShutdown()
64
{
78
{
65
  AssertIsOnBackgroundThread();
79
  AssertIsOnBackgroundThread();
66
80
81
  if (NS_WARN_IF(!mService)) {
82
    return false;
83
  }
84
67
  Unused << Send__delete__(this);
85
  Unused << Send__delete__(this);
68
86
69
  return true;
87
  return true;
70
}
88
}
71
89
72
} // namespace dom
90
} // namespace dom
73
} // namespace mozilla
91
} // namespace mozilla
(-)a/dom/sync/SyncManagerParent.h (+4 lines)
Line     Link Here 
 Lines 15-44    Link Here 
15
namespace mozilla {
15
namespace mozilla {
16
16
17
namespace ipc {
17
namespace ipc {
18
class BackgroundParentImpl;
18
class BackgroundParentImpl;
19
} // namespace ipc
19
} // namespace ipc
20
20
21
namespace dom {
21
namespace dom {
22
22
23
class SyncService;
24
23
class SyncManagerParent final : public PSyncManagerParent
25
class SyncManagerParent final : public PSyncManagerParent
24
{
26
{
25
  friend class mozilla::ipc::BackgroundParentImpl;
27
  friend class mozilla::ipc::BackgroundParentImpl;
26
28
27
public:
29
public:
28
  virtual bool RecvRequest(const nsID& aRequestId,
30
  virtual bool RecvRequest(const nsID& aRequestId,
29
                           const SyncOp& aOp) override;
31
                           const SyncOp& aOp) override;
30
32
31
  virtual bool RecvShutdown() override;
33
  virtual bool RecvShutdown() override;
32
private:
34
private:
33
  SyncManagerParent();
35
  SyncManagerParent();
34
  ~SyncManagerParent();
36
  ~SyncManagerParent();
35
37
36
  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
38
  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
39
40
  RefPtr<SyncService> mService;
37
};
41
};
38
42
39
} // namespace dom
43
} // namespace dom
40
} // namespace mozilla
44
} // namespace mozilla
41
45
42
#endif // mozilla_dom_SyncManagerParent_h
46
#endif // mozilla_dom_SyncManagerParent_h
43
47
44
48
(-)a/dom/sync/SyncService.cpp (+115 lines)
Line     Link Here 
Line 0    Link Here 
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "SyncService.h"
8
#include "SyncManagerParent.h"
9
10
namespace mozilla {
11
12
namespace dom {
13
14
namespace {
15
  SyncService* sInstance = nullptr;
16
} // namespace
17
18
SyncService::SyncService()
19
{
20
  AssertIsOnBackgroundThread();
21
22
  // sInstance is a raw SyncService*.
23
  MOZ_ASSERT(!sInstance);
24
  sInstance = this;
25
}
26
27
SyncService::~SyncService()
28
{
29
  AssertIsOnBackgroundThread();
30
  MOZ_ASSERT(sInstance == this);
31
  MOZ_ASSERT(mSyncManagerActors.Count() == 0);
32
33
  sInstance = nullptr;
34
}
35
36
// static
37
already_AddRefed<SyncService>
38
SyncService::GetOrCreate()
39
{
40
  AssertIsOnBackgroundThread();
41
42
  RefPtr<SyncService> instance = sInstance;
43
  if (!instance) {
44
    instance = new SyncService();
45
  }
46
  return instance.forget();
47
}
48
49
void
50
SyncService::RegisterActor(SyncManagerParent* aParent)
51
{
52
  AssertIsOnBackgroundThread();
53
  MOZ_ASSERT(aParent);
54
  MOZ_ASSERT(!mSyncManagerActors.Contains(aParent));
55
56
  mSyncManagerActors.PutEntry(aParent);
57
}
58
59
void
60
SyncService::UnregisterActor(SyncManagerParent* aParent)
61
{
62
  AssertIsOnBackgroundThread();
63
  MOZ_ASSERT(aParent);
64
  MOZ_ASSERT(mSyncManagerActors.Contains(aParent));
65
66
  mSyncManagerActors.RemoveEntry(aParent);
67
}
68
69
void
70
SyncService::RegisterActor(workers::ServiceWorkerManagerParent* aParent)
71
{
72
  AssertIsOnBackgroundThread();
73
  MOZ_ASSERT(aParent);
74
  MOZ_ASSERT(!mServiceWorkerManagerActors.Contains(aParent));
75
76
  mServiceWorkerManagerActors.PutEntry(aParent);
77
}
78
79
void
80
SyncService::UnregisterActor(workers::ServiceWorkerManagerParent* aParent)
81
{
82
  AssertIsOnBackgroundThread();
83
  MOZ_ASSERT(aParent);
84
  MOZ_ASSERT(mServiceWorkerManagerActors.Contains(aParent));
85
86
  mServiceWorkerManagerActors.RemoveEntry(aParent);
87
}
88
89
bool
90
SyncService::Register(const PrincipalInfo& aPrincipal,
91
                      const nsString& aScope,
92
                      const nsString& aTag)
93
{
94
  // XXX implement me.
95
96
  //XXX REMOVE ME - Sync event test.
97
  for (auto iter = mServiceWorkerManagerActors.Iter(); !iter.Done(); iter.Next()) {
98
    RefPtr<ServiceWorkerManagerParent> parent = iter.Get()->GetKey();
99
    MOZ_ASSERT(parent);
100
    Unused << parent->SendNotifySyncEvent(aPrincipal, aScope, aTag, false);
101
  }
102
103
  return true;
104
}
105
106
void
107
SyncService::GetTags(const PrincipalInfo& aPrincipal,
108
                     const nsString& aScope,
109
                     nsTArray<nsString>& aTags)
110
{
111
  // XXX implement me.
112
}
113
114
} // namespace dom
115
} // namespace mozilla
(-)a/dom/sync/SyncService.h (+56 lines)
Line     Link Here 
Line 0    Link Here 
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef mozilla_dom_SyncService_h
8
#define mozilla_dom_SyncService_h
9
10
#include "nsISupportsImpl.h"
11
#include "nsHashKeys.h"
12
#include "nsTHashtable.h"
13
#include "ServiceWorkerManagerParent.h"
14
15
namespace mozilla {
16
namespace dom {
17
18
namespace workers {
19
class ServiceWorkerManagerParent;
20
} // namespace workers
21
22
class SyncManagerParent;
23
24
class SyncService final
25
{
26
public:
27
  NS_INLINE_DECL_REFCOUNTING(SyncService)
28
29
  static already_AddRefed<SyncService> GetOrCreate();
30
31
  void RegisterActor(SyncManagerParent* aParent);
32
  void UnregisterActor(SyncManagerParent* aParent);
33
34
  void RegisterActor(workers::ServiceWorkerManagerParent* aParent);
35
  void UnregisterActor(workers::ServiceWorkerManagerParent* aParent);
36
37
  bool Register(const PrincipalInfo& aPrincipal,
38
                const nsString& aScope,
39
                const nsString& aTag);
40
  void GetTags(const PrincipalInfo& aPrincipal,
41
               const nsString& aScope,
42
               nsTArray<nsString>& aTags);
43
44
private:
45
  SyncService();
46
  ~SyncService();
47
48
  nsTHashtable<nsPtrHashKey<SyncManagerParent>> mSyncManagerActors;
49
  nsTHashtable<nsPtrHashKey<workers::ServiceWorkerManagerParent>>
50
    mServiceWorkerManagerActors;
51
};
52
53
} // namespace dom
54
} // namespace mozilla
55
56
#endif // mozilla_dom_SyncService_h
(-)a/dom/sync/moz.build (-1 / +2 lines)
Line     Link Here 
 Lines 5-21    Link Here 
5
5
6
EXPORTS.mozilla.dom += [
6
EXPORTS.mozilla.dom += [
7
    'SyncManager.h'
7
    'SyncManager.h'
8
]
8
]
9
9
10
UNIFIED_SOURCES += [
10
UNIFIED_SOURCES += [
11
    'SyncManager.cpp',
11
    'SyncManager.cpp',
12
    'SyncManagerChild.cpp',
12
    'SyncManagerChild.cpp',
13
    'SyncManagerParent.cpp'
13
    'SyncManagerParent.cpp',
14
    'SyncService.cpp'
14
]
15
]
15
16
16
IPDL_SOURCES += [
17
IPDL_SOURCES += [
17
    'PSyncManager.ipdl',
18
    'PSyncManager.ipdl',
18
    'SyncIPCTypes.ipdlh'
19
    'SyncIPCTypes.ipdlh'
19
]
20
]
20
21
21
LOCAL_INCLUDES += [
22
LOCAL_INCLUDES += [
(-)a/dom/workers/ServiceWorkerManagerParent.cpp (-16 / +19 lines)
Line     Link Here 
 Lines 1-16    Link Here 
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
6
7
#include "ServiceWorkerManagerParent.h"
7
#include "ServiceWorkerManagerParent.h"
8
#include "ServiceWorkerManagerService.h"
8
#include "ServiceWorkerManagerService.h"
9
#include "SyncService.h"
9
#include "mozilla/AppProcessChecker.h"
10
#include "mozilla/AppProcessChecker.h"
10
#include "mozilla/dom/ContentParent.h"
11
#include "mozilla/dom/ContentParent.h"
11
#include "mozilla/dom/ServiceWorkerRegistrar.h"
12
#include "mozilla/dom/ServiceWorkerRegistrar.h"
12
#include "mozilla/ipc/BackgroundParent.h"
13
#include "mozilla/ipc/BackgroundParent.h"
13
#include "mozilla/ipc/BackgroundUtils.h"
14
#include "mozilla/ipc/BackgroundUtils.h"
14
#include "mozilla/unused.h"
15
#include "mozilla/unused.h"
15
#include "nsThreadUtils.h"
16
#include "nsThreadUtils.h"
16
17
 Lines 143-164   private: Link Here 
143
  PrincipalInfo mPrincipalInfo;
144
  PrincipalInfo mPrincipalInfo;
144
  RefPtr<nsRunnable> mCallback;
145
  RefPtr<nsRunnable> mCallback;
145
  nsCOMPtr<nsIThread> mBackgroundThread;
146
  nsCOMPtr<nsIThread> mBackgroundThread;
146
};
147
};
147
148
148
} // namespace
149
} // namespace
149
150
150
ServiceWorkerManagerParent::ServiceWorkerManagerParent()
151
ServiceWorkerManagerParent::ServiceWorkerManagerParent()
151
  : mService(ServiceWorkerManagerService::GetOrCreate())
152
  : mServiceWorkerService(ServiceWorkerManagerService::GetOrCreate())
153
  , mSyncService(SyncService::GetOrCreate())
152
  , mID(++sServiceWorkerManagerParentID)
154
  , mID(++sServiceWorkerManagerParentID)
153
  , mActorDestroyed(false)
155
  , mActorDestroyed(false)
154
{
156
{
155
  AssertIsOnBackgroundThread();
157
  AssertIsOnBackgroundThread();
156
  mService->RegisterActor(this);
158
  mServiceWorkerService->RegisterActor(this);
159
  mSyncService->RegisterActor(this);
157
}
160
}
158
161
159
ServiceWorkerManagerParent::~ServiceWorkerManagerParent()
162
ServiceWorkerManagerParent::~ServiceWorkerManagerParent()
160
{
163
{
161
  AssertIsOnBackgroundThread();
164
  AssertIsOnBackgroundThread();
162
}
165
}
163
166
164
already_AddRefed<ContentParent>
167
already_AddRefed<ContentParent>
 Lines 243-331   ServiceWorkerManagerParent::RecvUnregist Link Here 
243
}
246
}
244
247
245
bool
248
bool
246
ServiceWorkerManagerParent::RecvPropagateSoftUpdate(const PrincipalOriginAttributes& aOriginAttributes,
249
ServiceWorkerManagerParent::RecvPropagateSoftUpdate(const PrincipalOriginAttributes& aOriginAttributes,
247
                                                    const nsString& aScope)
250
                                                    const nsString& aScope)
248
{
251
{
249
  AssertIsOnBackgroundThread();
252
  AssertIsOnBackgroundThread();
250
253
251
  if (NS_WARN_IF(!mService)) {
254
  if (NS_WARN_IF(!mServiceWorkerService)) {
252
    return false;
255
    return false;
253
  }
256
  }
254
257
255
  mService->PropagateSoftUpdate(mID, aOriginAttributes, aScope);
258
  mServiceWorkerService->PropagateSoftUpdate(mID, aOriginAttributes, aScope);
256
  return true;
259
  return true;
257
}
260
}
258
261
259
bool
262
bool
260
ServiceWorkerManagerParent::RecvPropagateUnregister(const PrincipalInfo& aPrincipalInfo,
263
ServiceWorkerManagerParent::RecvPropagateUnregister(const PrincipalInfo& aPrincipalInfo,
261
                                                    const nsString& aScope)
264
                                                    const nsString& aScope)
262
{
265
{
263
  AssertIsOnBackgroundThread();
266
  AssertIsOnBackgroundThread();
264
267
265
  if (NS_WARN_IF(!mService)) {
268
  if (NS_WARN_IF(!mServiceWorkerService)) {
266
    return false;
269
    return false;
267
  }
270
  }
268
271
269
  mService->PropagateUnregister(mID, aPrincipalInfo, aScope);
272
  mServiceWorkerService->PropagateUnregister(mID, aPrincipalInfo, aScope);
270
  return true;
273
  return true;
271
}
274
}
272
275
273
bool
276
bool
274
ServiceWorkerManagerParent::RecvPropagateRemove(const nsCString& aHost)
277
ServiceWorkerManagerParent::RecvPropagateRemove(const nsCString& aHost)
275
{
278
{
276
  AssertIsOnBackgroundThread();
279
  AssertIsOnBackgroundThread();
277
280
278
  if (NS_WARN_IF(!mService)) {
281
  if (NS_WARN_IF(!mServiceWorkerService)) {
279
    return false;
282
    return false;
280
  }
283
  }
281
284
282
  mService->PropagateRemove(mID, aHost);
285
  mServiceWorkerService->PropagateRemove(mID, aHost);
283
  return true;
286
  return true;
284
}
287
}
285
288
286
bool
289
bool
287
ServiceWorkerManagerParent::RecvPropagateRemoveAll()
290
ServiceWorkerManagerParent::RecvPropagateRemoveAll()
288
{
291
{
289
  AssertIsOnBackgroundThread();
292
  AssertIsOnBackgroundThread();
290
293
291
  if (NS_WARN_IF(!mService)) {
294
  if (NS_WARN_IF(!mServiceWorkerService)) {
292
    return false;
295
    return false;
293
  }
296
  }
294
297
295
  mService->PropagateRemoveAll(mID);
298
  mServiceWorkerService->PropagateRemoveAll(mID);
296
  return true;
299
  return true;
297
}
300
}
298
301
299
bool
302
bool
300
ServiceWorkerManagerParent::RecvShutdown()
303
ServiceWorkerManagerParent::RecvShutdown()
301
{
304
{
302
  AssertIsOnBackgroundThread();
305
  AssertIsOnBackgroundThread();
303
306
304
  if (NS_WARN_IF(!mService)) {
307
  if (NS_WARN_IF(!mServiceWorkerService)) {
305
    return false;
308
    return false;
306
  }
309
  }
307
310
308
  mService->UnregisterActor(this);
311
  mServiceWorkerService->UnregisterActor(this);
309
  mService = nullptr;
312
  mServiceWorkerService = nullptr;
310
313
311
  Unused << Send__delete__(this);
314
  Unused << Send__delete__(this);
312
  return true;
315
  return true;
313
}
316
}
314
317
315
void
318
void
316
ServiceWorkerManagerParent::ActorDestroy(ActorDestroyReason aWhy)
319
ServiceWorkerManagerParent::ActorDestroy(ActorDestroyReason aWhy)
317
{
320
{
318
  AssertIsOnBackgroundThread();
321
  AssertIsOnBackgroundThread();
319
322
320
  mActorDestroyed = true;
323
  mActorDestroyed = true;
321
324
322
  if (mService) {
325
  if (mServiceWorkerService) {
323
    // This object is about to be released and with it, also mService will be
326
    // This object is about to be released and with it, also mServiceWorkerService will be
324
    // released too.
327
    // released too.
325
    mService->UnregisterActor(this);
328
    mServiceWorkerService->UnregisterActor(this);
326
  }
329
  }
327
}
330
}
328
331
329
} // namespace workers
332
} // namespace workers
330
} // namespace dom
333
} // namespace dom
331
} // namespace mozilla
334
} // namespace mozilla
(-)a/dom/workers/ServiceWorkerManagerParent.h (-1 / +5 lines)
Line     Link Here 
 Lines 13-28   namespace mozilla { Link Here 
13
13
14
class PrincipalOriginAttributes;
14
class PrincipalOriginAttributes;
15
15
16
namespace ipc {
16
namespace ipc {
17
class BackgroundParentImpl;
17
class BackgroundParentImpl;
18
} // namespace ipc
18
} // namespace ipc
19
19
20
namespace dom {
20
namespace dom {
21
22
class SyncService;
23
21
namespace workers {
24
namespace workers {
22
25
23
class ServiceWorkerManagerService;
26
class ServiceWorkerManagerService;
24
27
25
class ServiceWorkerManagerParent final : public PServiceWorkerManagerParent
28
class ServiceWorkerManagerParent final : public PServiceWorkerManagerParent
26
{
29
{
27
  friend class mozilla::ipc::BackgroundParentImpl;
30
  friend class mozilla::ipc::BackgroundParentImpl;
28
31
 Lines 59-75   private: Link Here 
59
  virtual bool RecvPropagateRemove(const nsCString& aHost) override;
62
  virtual bool RecvPropagateRemove(const nsCString& aHost) override;
60
63
61
  virtual bool RecvPropagateRemoveAll() override;
64
  virtual bool RecvPropagateRemoveAll() override;
62
65
63
  virtual bool RecvShutdown() override;
66
  virtual bool RecvShutdown() override;
64
67
65
  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
68
  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
66
69
67
  RefPtr<ServiceWorkerManagerService> mService;
70
  RefPtr<ServiceWorkerManagerService> mServiceWorkerService;
71
  RefPtr<SyncService> mSyncService;
68
72
69
  // We use this ID in the Service in order to avoid the sending of messages to
73
  // We use this ID in the Service in order to avoid the sending of messages to
70
  // ourself.
74
  // ourself.
71
  uint64_t mID;
75
  uint64_t mID;
72
76
73
  bool mActorDestroyed;
77
  bool mActorDestroyed;
74
};
78
};
75
79
(-)a/dom/workers/moz.build (+1 lines)
Line     Link Here 
 Lines 92-107   IPDL_SOURCES += [ Link Here 
92
    'PServiceWorkerManager.ipdl',
92
    'PServiceWorkerManager.ipdl',
93
    'ServiceWorkerRegistrarTypes.ipdlh',
93
    'ServiceWorkerRegistrarTypes.ipdlh',
94
]
94
]
95
95
96
LOCAL_INCLUDES += [
96
LOCAL_INCLUDES += [
97
    '../base',
97
    '../base',
98
    '../system',
98
    '../system',
99
    '/dom/base',
99
    '/dom/base',
100
    '/dom/sync',
100
    '/xpcom/build',
101
    '/xpcom/build',
101
    '/xpcom/threads',
102
    '/xpcom/threads',
102
]
103
]
103
104
104
include('/ipc/chromium/chromium-config.mozbuild')
105
include('/ipc/chromium/chromium-config.mozbuild')
105
106
106
FINAL_LIBRARY = 'xul'
107
FINAL_LIBRARY = 'xul'
107
108

Return to bug 1217544