author Masayuki Nakano <>
Wed, 28 Jan 2015 15:27:32 +0900
changeset 253333 72718ad7b573dbb66267aca63c151f5b36de3120
parent 210644 e9d2ef40c8d6bac6bdd0d719a9016087c1ca3c9f
child 299623 ad2b2277a2a6e166a7fc50535de2052bbb804b2d
permissions -rw-r--r--
Bug 917322 part.14 Remove sendCompositionEvent() and createCompositionStringSynthesizer() of nsIDOMWindowUtils and nsICompositionStringSynthesizer r=smaug, sr=smaug

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 */

/* diagnostic reporting for CSS style sheet parser */

#ifndef mozilla_css_ErrorReporter_h_
#define mozilla_css_ErrorReporter_h_

// XXX turn this off for minimo builds

#include "nsString.h"

struct nsCSSToken;
class nsCSSScanner;
class nsIURI;

namespace mozilla {
class CSSStyleSheet;

namespace css {

class Loader;

// If CSS_REPORT_PARSE_ERRORS is not defined, all of this class's
// methods become inline stubs.
class MOZ_STACK_CLASS ErrorReporter {
  ErrorReporter(const nsCSSScanner &aScanner,
                const CSSStyleSheet *aSheet,
                const Loader *aLoader,
                nsIURI *aURI);

  static void ReleaseGlobals();

  void OutputError();
  void OutputError(uint32_t aLineNumber, uint32_t aLineOffset);
  void ClearError();

  // In all overloads of ReportUnexpected, aMessage is a stringbundle
  // name, which will be processed as a format string with the
  // indicated number of parameters.

  // no parameters
  void ReportUnexpected(const char *aMessage);
  // one parameter, a string
  void ReportUnexpected(const char *aMessage, const nsString& aParam);
  // one parameter, a token
  void ReportUnexpected(const char *aMessage, const nsCSSToken& aToken);
  // two parameters, a token and a character, in that order
  void ReportUnexpected(const char *aMessage, const nsCSSToken& aToken,
                        char16_t aChar);

  // for ReportUnexpectedEOF, aExpected can be either a stringbundle
  // name or a single character.  In the former case there may not be
  // any format parameters.
  void ReportUnexpectedEOF(const char *aExpected);
  void ReportUnexpectedEOF(char16_t aExpected);

  void AddToError(const nsString &aErrorText);

  nsAutoString mError;
  nsString mErrorLine;
  nsString mFileName;
  const nsCSSScanner *mScanner;
  const CSSStyleSheet *mSheet;
  const Loader *mLoader;
  nsIURI *mURI;
  uint64_t mInnerWindowID;
  uint32_t mErrorLineNumber;
  uint32_t mPrevErrorLineNumber;
  uint32_t mErrorColNumber;

inline ErrorReporter::ErrorReporter(const nsCSSScanner&,
                                    const CSSStyleSheet*,
                                    const Loader*,
                                    nsIURI*) {}
inline ErrorReporter::~ErrorReporter() {}

inline void ErrorReporter::ReleaseGlobals() {}

inline void ErrorReporter::OutputError() {}
inline void ErrorReporter::ClearError() {}

inline void ErrorReporter::ReportUnexpected(const char *) {}
inline void ErrorReporter::ReportUnexpected(const char *, const nsString &) {}
inline void ErrorReporter::ReportUnexpected(const char *, const nsCSSToken &) {}
inline void ErrorReporter::ReportUnexpected(const char *, const nsCSSToken &,
                                            char16_t) {}

inline void ErrorReporter::ReportUnexpectedEOF(const char *) {}
inline void ErrorReporter::ReportUnexpectedEOF(char16_t) {}

inline void ErrorReporter::AddToError(const nsString &) {}

} // namespace css
} // namespace mozilla

#endif // mozilla_css_ErrorReporter_h_