tor-browser

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

Warnings.cpp (3187B)


      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 "js/Warnings.h"
      8 #include "vm/Warnings.h"
      9 
     10 #include <stdarg.h>  // va_{list,start,end}
     11 
     12 #include "jstypes.h"  // JS_PUBLIC_API
     13 
     14 #include "js/Context.h"               // js::AssertHeapIsIdle
     15 #include "js/friend/ErrorMessages.h"  // js::GetErrorMessage
     16 #include "vm/ErrorReporting.h"        // IsWarning
     17 #include "vm/JSContext.h"  // js::ArgumentsAre{ASCII,Latin1,UTF8}, js::ReportError{Number}VA
     18 
     19 using js::ArgumentsAreASCII;
     20 using js::ArgumentsAreLatin1;
     21 using js::ArgumentsAreUTF8;
     22 using js::AssertHeapIsIdle;
     23 using js::GetErrorMessage;
     24 using js::IsWarning;
     25 using js::ReportErrorVA;
     26 
     27 JS_PUBLIC_API bool JS::WarnASCII(JSContext* cx, const char* format, ...) {
     28  va_list ap;
     29  bool ok;
     30 
     31  AssertHeapIsIdle();
     32  va_start(ap, format);
     33  ok = ReportErrorVA(cx, IsWarning::Yes, format, ArgumentsAreASCII, ap);
     34  va_end(ap);
     35  return ok;
     36 }
     37 
     38 JS_PUBLIC_API bool JS::WarnLatin1(JSContext* cx, const char* format, ...) {
     39  va_list ap;
     40  bool ok;
     41 
     42  AssertHeapIsIdle();
     43  va_start(ap, format);
     44  ok = ReportErrorVA(cx, IsWarning::Yes, format, ArgumentsAreLatin1, ap);
     45  va_end(ap);
     46  return ok;
     47 }
     48 
     49 JS_PUBLIC_API bool JS::WarnUTF8(JSContext* cx, const char* format, ...) {
     50  va_list ap;
     51  bool ok;
     52 
     53  AssertHeapIsIdle();
     54  va_start(ap, format);
     55  ok = ReportErrorVA(cx, IsWarning::Yes, format, ArgumentsAreUTF8, ap);
     56  va_end(ap);
     57  return ok;
     58 }
     59 
     60 JS_PUBLIC_API JS::WarningReporter JS::GetWarningReporter(JSContext* cx) {
     61  return cx->runtime()->warningReporter;
     62 }
     63 
     64 JS_PUBLIC_API JS::WarningReporter JS::SetWarningReporter(
     65    JSContext* cx, WarningReporter reporter) {
     66  WarningReporter older = cx->runtime()->warningReporter;
     67  cx->runtime()->warningReporter = reporter;
     68  return older;
     69 }
     70 
     71 bool js::WarnNumberASCII(JSContext* cx, const unsigned errorNumber, ...) {
     72  va_list ap;
     73  va_start(ap, errorNumber);
     74  bool ok = ReportErrorNumberVA(cx, IsWarning::Yes, GetErrorMessage, nullptr,
     75                                errorNumber, ArgumentsAreASCII, ap);
     76  va_end(ap);
     77  return ok;
     78 }
     79 
     80 bool js::WarnNumberLatin1(JSContext* cx, const unsigned errorNumber, ...) {
     81  va_list ap;
     82  va_start(ap, errorNumber);
     83  bool ok = ReportErrorNumberVA(cx, IsWarning::Yes, GetErrorMessage, nullptr,
     84                                errorNumber, ArgumentsAreLatin1, ap);
     85  va_end(ap);
     86  return ok;
     87 }
     88 
     89 bool js::WarnNumberUTF8(JSContext* cx, const unsigned errorNumber, ...) {
     90  va_list ap;
     91  va_start(ap, errorNumber);
     92  bool ok = ReportErrorNumberVA(cx, IsWarning::Yes, GetErrorMessage, nullptr,
     93                                errorNumber, ArgumentsAreUTF8, ap);
     94  va_end(ap);
     95  return ok;
     96 }
     97 
     98 bool js::WarnNumberUC(JSContext* cx, const unsigned errorNumber, ...) {
     99  va_list ap;
    100  va_start(ap, errorNumber);
    101  bool ok = ReportErrorNumberVA(cx, IsWarning::Yes, GetErrorMessage, nullptr,
    102                                errorNumber, ArgumentsAreUnicode, ap);
    103  va_end(ap);
    104  return ok;
    105 }