From 83245fc00d5201030447b52130f96f5884c7ab7f Mon Sep 17 00:00:00 2001
From: Eric Rahm <erahm@mozilla.com>
Date: Mon, 22 Sep 2014 15:32:21 -0700
Subject: [PATCH] Bug 1060171 - Part 1: Add log levels to nsIConsoleMessage.
 r=froydnj

---
 js/xpconnect/idl/nsIScriptError.idl |  2 +-
 js/xpconnect/src/nsScriptError.cpp  |  9 +++++++++
 xpcom/base/nsConsoleMessage.cpp     |  7 +++++++
 xpcom/base/nsIConsoleMessage.idl    | 13 ++++++++++++-
 4 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/js/xpconnect/idl/nsIScriptError.idl b/js/xpconnect/idl/nsIScriptError.idl
index aa0157c6bd2d..8b767629942d 100644
--- a/js/xpconnect/idl/nsIScriptError.idl
+++ b/js/xpconnect/idl/nsIScriptError.idl
@@ -11,7 +11,7 @@
 #include "nsISupports.idl"
 #include "nsIConsoleMessage.idl"
 
-[scriptable, uuid(cac9d8e8-0d53-4fa8-9903-bb367e4fa1fe)]
+[scriptable, uuid(d6a8dae2-367f-4939-a843-11e0c48e240c)]
 interface nsIScriptError : nsIConsoleMessage
 {
     /** pseudo-flag for default case */
diff --git a/js/xpconnect/src/nsScriptError.cpp b/js/xpconnect/src/nsScriptError.cpp
index 944da2e741ee..6a03d79130a2 100644
--- a/js/xpconnect/src/nsScriptError.cpp
+++ b/js/xpconnect/src/nsScriptError.cpp
@@ -52,6 +52,15 @@ nsScriptError::GetMessageMoz(char16_t **result) {
     return NS_OK;
 }
 
+
+NS_IMETHODIMP
+nsScriptError::GetLogLevel(uint32_t* aLogLevel)
+{
+  *aLogLevel = mFlags & (uint32_t)nsIScriptError::errorFlag ?
+               nsIConsoleMessage::error : nsIConsoleMessage::warn;
+  return NS_OK;
+}
+
 // nsIScriptError methods
 NS_IMETHODIMP
 nsScriptError::GetErrorMessage(nsAString& aResult) {
diff --git a/xpcom/base/nsConsoleMessage.cpp b/xpcom/base/nsConsoleMessage.cpp
index c6dc6688f16b..e3530745b745 100644
--- a/xpcom/base/nsConsoleMessage.cpp
+++ b/xpcom/base/nsConsoleMessage.cpp
@@ -33,6 +33,13 @@ nsConsoleMessage::GetMessageMoz(char16_t** aResult)
   return NS_OK;
 }
 
+NS_IMETHODIMP
+nsConsoleMessage::GetLogLevel(uint32_t* aLogLevel)
+{
+  *aLogLevel = nsConsoleMessage::info;
+  return NS_OK;
+}
+
 NS_IMETHODIMP
 nsConsoleMessage::GetTimeStamp(int64_t* aTimeStamp)
 {
diff --git a/xpcom/base/nsIConsoleMessage.idl b/xpcom/base/nsIConsoleMessage.idl
index ba6a80f8d93e..bf233b28bbfb 100644
--- a/xpcom/base/nsIConsoleMessage.idl
+++ b/xpcom/base/nsIConsoleMessage.idl
@@ -10,9 +10,20 @@
  * provide an object that can be qi'ed to provide more specific
  * message information.
  */
-[scriptable, uuid(c14c151b-5ea4-47ed-8e85-d392cdd3e154)]
+[scriptable, uuid(3aba9617-10e2-4839-83ae-2e6fc4df428b)]
 interface nsIConsoleMessage : nsISupports
 {
+    /** Log level constants. */
+    const uint32_t debug = 0;
+    const uint32_t info = 1;
+    const uint32_t warn = 2;
+    const uint32_t error = 3;
+
+    /**
+     * The log level of this message.
+     */
+    readonly attribute uint32_t logLevel;
+
     /**
      * The time (in milliseconds from the Epoch) that the message instance
      * was initialised.