content/base/src/nsScriptElement.h
author Ehsan Akhgari <ehsan@mozilla.com>
Mon, 01 Sep 2014 18:00:53 -0400
changeset 202897 da6c71a8f5ae293ea58368d928ff3faf9ef0f1e9
parent 142489 c3fc89ca1e151269f02b2da98edc13aadb796fa7
child 202904 912065e39dc3ab54f89582c3e1c964a98201a124
permissions -rw-r--r--
Bug 1060987 - Fix more bad implicit constructors in DOM; r=baku

/* 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 nsScriptElement_h
#define nsScriptElement_h

#include "mozilla/Attributes.h"
#include "nsIScriptLoaderObserver.h"
#include "nsIScriptElement.h"
#include "nsStubMutationObserver.h"

/**
 * Baseclass useful for script elements (such as <xhtml:script> and
 * <svg:script>). Currently the class assumes that only the 'src'
 * attribute and the children of the class affect what script to execute.
 */

class nsScriptElement : public nsIScriptElement,
                        public nsStubMutationObserver
{
public:
  // nsIScriptLoaderObserver
  NS_DECL_NSISCRIPTLOADEROBSERVER

  // nsIMutationObserver
  NS_DECL_NSIMUTATIONOBSERVER_CHARACTERDATACHANGED
  NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
  NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
  NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED

  explicit nsScriptElement(mozilla::dom::FromParser aFromParser)
    : nsIScriptElement(aFromParser)
  {
  }

  virtual nsresult FireErrorEvent() MOZ_OVERRIDE;

protected:
  // Internal methods

  /**
   * Check if this element contains any script, linked or inline
   */
  virtual bool HasScriptContent() = 0;

  virtual bool MaybeProcessScript() MOZ_OVERRIDE;
};

#endif // nsScriptElement_h