tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

RddProcessTest.cpp (2041B)


      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 #if defined(ENABLE_TESTS)
      8 #  include "mozilla/RddProcessTest.h"
      9 
     10 #  include "mozilla/RDDChild.h"
     11 #  include "mozilla/RDDProcessManager.h"
     12 #  include "mozilla/dom/Promise.h"
     13 
     14 namespace mozilla {
     15 
     16 NS_IMETHODIMP
     17 RddProcessTest::TestTelemetryProbes(JSContext* aCx,
     18                                    mozilla::dom::Promise** aOutPromise) {
     19  NS_ENSURE_ARG(aOutPromise);
     20  *aOutPromise = nullptr;
     21  nsIGlobalObject* global = xpc::CurrentNativeGlobal(aCx);
     22  if (NS_WARN_IF(!global)) {
     23    return NS_ERROR_FAILURE;
     24  }
     25 
     26  ErrorResult erv;
     27  RefPtr<dom::Promise> promise = dom::Promise::Create(global, erv);
     28  if (NS_WARN_IF(erv.Failed())) {
     29    return erv.StealNSResult();
     30  }
     31 
     32  RDDProcessManager* rddProc = RDDProcessManager::Get();
     33  MOZ_ASSERT(rddProc, "No RddProcessManager?");
     34 
     35  rddProc->LaunchRDDProcess()->Then(
     36      GetMainThreadSerialEventTarget(), __func__,
     37      [promise, rddProc]() {
     38        RDDChild* child = rddProc->GetRDDChild();
     39        if (!rddProc) {
     40          promise->MaybeReject(NS_ERROR_NOT_AVAILABLE);
     41        }
     42        MOZ_ASSERT(rddProc, "No RDD Proc?");
     43 
     44        if (!child) {
     45          promise->MaybeReject(NS_ERROR_NOT_AVAILABLE);
     46        }
     47        MOZ_ASSERT(child, "No RDD Child?");
     48 
     49        (void)child->SendTestTelemetryProbes();
     50        promise->MaybeResolve((int32_t)rddProc->RDDProcessPid());
     51      },
     52      [promise](nsresult aError) {
     53        MOZ_CRASH("RddProcessTest; failure to get RDD child");
     54      });
     55 
     56  promise.forget(aOutPromise);
     57  return NS_OK;
     58 }
     59 
     60 NS_IMETHODIMP
     61 RddProcessTest::StopProcess() {
     62  RDDProcessManager::RDDProcessShutdown();
     63  return NS_OK;
     64 }
     65 
     66 NS_IMPL_ISUPPORTS(RddProcessTest, nsIRddProcessTest)
     67 
     68 }  // namespace mozilla
     69 #endif  // defined(ENABLE_TESTS)