diff -r 000000000000 -r 6474c204b198 dom/workers/WorkerScope.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/workers/WorkerScope.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,169 @@ +/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */ +/* 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/. */ + +#ifndef mozilla_dom_workerscope_h__ +#define mozilla_dom_workerscope_h__ + +#include "Workers.h" +#include "mozilla/DOMEventTargetHelper.h" + +namespace mozilla { +namespace dom { + +class Console; +class Function; + +} // namespace dom +} // namespace mozilla + +BEGIN_WORKERS_NAMESPACE + +class WorkerPrivate; +class WorkerLocation; +class WorkerNavigator; + +class WorkerGlobalScope : public DOMEventTargetHelper, + public nsIGlobalObject +{ + nsRefPtr mConsole; + nsRefPtr mLocation; + nsRefPtr mNavigator; + +protected: + WorkerPrivate* mWorkerPrivate; + + WorkerGlobalScope(WorkerPrivate* aWorkerPrivate); + virtual ~WorkerGlobalScope(); + +public: + virtual JSObject* + WrapObject(JSContext* aCx) MOZ_OVERRIDE; + + virtual JSObject* + WrapGlobalObject(JSContext* aCx) = 0; + + virtual JSObject* + GetGlobalJSObject(void) MOZ_OVERRIDE + { + return GetWrapper(); + } + + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(WorkerGlobalScope, + DOMEventTargetHelper) + + already_AddRefed + Self() + { + return nsRefPtr(this).forget(); + } + + already_AddRefed + GetConsole(); + + already_AddRefed + Location(); + + already_AddRefed + Navigator(); + + already_AddRefed + GetExistingNavigator() const; + + void + Close(JSContext* aCx); + + OnErrorEventHandlerNonNull* + GetOnerror(); + void + SetOnerror(OnErrorEventHandlerNonNull* aHandler); + + void + ImportScripts(JSContext* aCx, const Sequence& aScriptURLs, + ErrorResult& aRv); + + int32_t + SetTimeout(JSContext* aCx, Function& aHandler, const int32_t aTimeout, + const Sequence& aArguments, ErrorResult& aRv); + int32_t + SetTimeout(JSContext* /* unused */, const nsAString& aHandler, + const int32_t aTimeout, const Sequence& /* unused */, + ErrorResult& aRv); + void + ClearTimeout(int32_t aHandle, ErrorResult& aRv); + int32_t + SetInterval(JSContext* aCx, Function& aHandler, + const Optional& aTimeout, + const Sequence& aArguments, ErrorResult& aRv); + int32_t + SetInterval(JSContext* /* unused */, const nsAString& aHandler, + const Optional& aTimeout, + const Sequence& /* unused */, ErrorResult& aRv); + void + ClearInterval(int32_t aHandle, ErrorResult& aRv); + + void + Atob(const nsAString& aAtob, nsAString& aOutput, ErrorResult& aRv) const; + void + Btoa(const nsAString& aBtoa, nsAString& aOutput, ErrorResult& aRv) const; + + IMPL_EVENT_HANDLER(online) + IMPL_EVENT_HANDLER(offline) + IMPL_EVENT_HANDLER(close) + + void + Dump(const Optional& aString) const; +}; + +class DedicatedWorkerGlobalScope MOZ_FINAL : public WorkerGlobalScope +{ + ~DedicatedWorkerGlobalScope() { } + +public: + DedicatedWorkerGlobalScope(WorkerPrivate* aWorkerPrivate); + + static bool + Visible(JSContext* aCx, JSObject* aObj); + + virtual JSObject* + WrapGlobalObject(JSContext* aCx) MOZ_OVERRIDE; + + void + PostMessage(JSContext* aCx, JS::Handle aMessage, + const Optional>& aTransferable, + ErrorResult& aRv); + + IMPL_EVENT_HANDLER(message) +}; + +class SharedWorkerGlobalScope MOZ_FINAL : public WorkerGlobalScope +{ + const nsCString mName; + + ~SharedWorkerGlobalScope() { } + +public: + SharedWorkerGlobalScope(WorkerPrivate* aWorkerPrivate, + const nsCString& aName); + + static bool + Visible(JSContext* aCx, JSObject* aObj); + + virtual JSObject* + WrapGlobalObject(JSContext* aCx) MOZ_OVERRIDE; + + void GetName(DOMString& aName) const { + aName.AsAString() = NS_ConvertUTF8toUTF16(mName); + } + + IMPL_EVENT_HANDLER(connect) +}; + +JSObject* +CreateGlobalScope(JSContext* aCx); + +END_WORKERS_NAMESPACE + +#endif /* mozilla_dom_workerscope_h__ */