tor-browser

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

testJSEvaluateScript.cpp (1161B)


      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 */
      4 
      5 #include "js/CompilationAndEvaluation.h"
      6 #include "js/EnvironmentChain.h"    // JS::EnvironmentChain
      7 #include "js/PropertyAndElement.h"  // JS_AlreadyHasOwnProperty, JS_HasProperty
      8 #include "js/SourceText.h"
      9 #include "jsapi-tests/tests.h"
     10 #include "util/Text.h"
     11 
     12 BEGIN_TEST(testJSEvaluateScript) {
     13  JS::RootedObject obj(cx, JS_NewPlainObject(cx));
     14  CHECK(obj);
     15 
     16  static const char16_t src[] = u"var x = 5;";
     17 
     18  JS::RootedValue retval(cx);
     19  JS::CompileOptions opts(cx);
     20  JS::EnvironmentChain envChain(cx, JS::SupportUnscopables::No);
     21  CHECK(envChain.append(obj));
     22 
     23  JS::SourceText<char16_t> srcBuf;
     24  CHECK(srcBuf.init(cx, src, js_strlen(src), JS::SourceOwnership::Borrowed));
     25 
     26  CHECK(JS::Evaluate(cx, envChain, opts.setFileAndLine(__FILE__, __LINE__),
     27                     srcBuf, &retval));
     28 
     29  bool hasProp = true;
     30  CHECK(JS_AlreadyHasOwnProperty(cx, obj, "x", &hasProp));
     31  CHECK(hasProp);
     32 
     33  hasProp = false;
     34  CHECK(JS_HasProperty(cx, global, "x", &hasProp));
     35  CHECK(!hasProp);
     36 
     37  return true;
     38 }
     39 END_TEST(testJSEvaluateScript)