| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2017 eyeo GmbH |    3  * Copyright (C) 2006-2017 eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|   12  * GNU General Public License for more details. |   12  * GNU General Public License for more details. | 
|   13  * |   13  * | 
|   14  * You should have received a copy of the GNU General Public License |   14  * You should have received a copy of the GNU General Public License | 
|   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|   16  */ |   16  */ | 
|   17  |   17  | 
|   18 #include <AdblockPlus/JsValue.h> |   18 #include <AdblockPlus/JsValue.h> | 
|   19 #include <AdblockPlus/LogSystem.h> |   19 #include <AdblockPlus/LogSystem.h> | 
|   20 #include <sstream> |   20 #include <sstream> | 
|   21  |   21  | 
|   22 #include "ConsoleJsObject.h" |   22 #include "ConsoleJsObject.h" | 
|   23 #include "JsContext.h" |   23 #include "JsContext.h" | 
|   24 #include "Utils.h" |   24 #include "Utils.h" | 
|   25  |   25  | 
|   26 namespace |   26 namespace | 
|   27 { |   27 { | 
|   28   v8::Handle<v8::Value> DoLog(AdblockPlus::LogSystem::LogLevel logLevel, |   28   void DoLog(AdblockPlus::LogSystem::LogLevel logLevel, | 
|   29       const v8::Arguments& arguments) |   29     const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   30   { |   30   { | 
|   31     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); |   31     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 
|   32     const AdblockPlus::JsContext context(*jsEngine); |   32     const AdblockPlus::JsContext context(*jsEngine); | 
|   33     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); |   33     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
|   34  |   34  | 
|   35     std::stringstream message; |   35     std::stringstream message; | 
|   36     for (size_t i = 0; i < converted.size(); i++) |   36     for (size_t i = 0; i < converted.size(); i++) | 
|   37     { |   37     { | 
|   38       if (i > 0) |   38       if (i > 0) | 
|   39         message << " "; |   39         message << " "; | 
|   40       message << converted[i].AsString(); |   40       message << converted[i].AsString(); | 
|   41     } |   41     } | 
|   42  |   42  | 
|   43     std::stringstream source; |   43     std::stringstream source; | 
|   44     v8::Local<v8::StackFrame> frame = v8::StackTrace::CurrentStackTrace(1)->GetF
     rame(0); |   44     v8::Local<v8::StackFrame> frame = v8::StackTrace::CurrentStackTrace(argument
     s.GetIsolate(), 1)->GetFrame(0); | 
|   45     source << AdblockPlus::Utils::FromV8String(frame->GetScriptName()); |   45     source << AdblockPlus::Utils::FromV8String(frame->GetScriptName()); | 
|   46     source << ":" << frame->GetLineNumber(); |   46     source << ":" << frame->GetLineNumber(); | 
|   47  |   47  | 
|   48     AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem(); |   48     AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem(); | 
|   49     (*callback)(logLevel, message.str(), source.str()); |   49     (*callback)(logLevel, message.str(), source.str()); | 
|   50     return v8::Undefined(); |  | 
|   51   } |   50   } | 
|   52  |   51  | 
|   53   v8::Handle<v8::Value> LogCallback(const v8::Arguments& arguments) |   52   void LogCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   54   { |   53   { | 
|   55     return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, arguments); |   54     return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, arguments); | 
|   56   } |   55   } | 
|   57  |   56  | 
|   58   v8::Handle<v8::Value> DebugCallback(const v8::Arguments& arguments) |   57   void DebugCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   59   { |   58   { | 
|   60     return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, arguments); |   59     DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, arguments); | 
|   61   } |   60   } | 
|   62  |   61  | 
|   63   v8::Handle<v8::Value> InfoCallback(const v8::Arguments& arguments) |   62   void InfoCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   64   { |   63   { | 
|   65     return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_INFO, arguments); |   64     DoLog(AdblockPlus::LogSystem::LOG_LEVEL_INFO, arguments); | 
|   66   } |   65   } | 
|   67  |   66  | 
|   68   v8::Handle<v8::Value> WarnCallback(const v8::Arguments& arguments) |   67   void WarnCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   69   { |   68   { | 
|   70     return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_WARN, arguments); |   69     DoLog(AdblockPlus::LogSystem::LOG_LEVEL_WARN, arguments); | 
|   71   } |   70   } | 
|   72  |   71  | 
|   73   v8::Handle<v8::Value> ErrorCallback(const v8::Arguments& arguments) |   72   void ErrorCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   74   { |   73   { | 
|   75     return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_ERROR, arguments); |   74     DoLog(AdblockPlus::LogSystem::LOG_LEVEL_ERROR, arguments); | 
|   76   } |   75   } | 
|   77  |   76  | 
|   78   v8::Handle<v8::Value> TraceCallback(const v8::Arguments& arguments) |   77   void TraceCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
|   79   { |   78   { | 
|   80     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); |   79     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 
|   81     const AdblockPlus::JsContext context(*jsEngine); |   80     const AdblockPlus::JsContext context(*jsEngine); | 
|   82     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); |   81     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
|   83  |   82  | 
|   84     std::stringstream traceback; |   83     std::stringstream traceback; | 
|   85     v8::Local<v8::StackTrace> frames = v8::StackTrace::CurrentStackTrace(100); |   84     v8::Local<v8::StackTrace> frames = v8::StackTrace::CurrentStackTrace(argumen
     ts.GetIsolate(), 100); | 
|   86     for (int i = 0, l = frames->GetFrameCount(); i < l; i++) |   85     for (int i = 0, l = frames->GetFrameCount(); i < l; i++) | 
|   87     { |   86     { | 
|   88       v8::Local<v8::StackFrame> frame = frames->GetFrame(i); |   87       v8::Local<v8::StackFrame> frame = frames->GetFrame(i); | 
|   89       traceback << (i + 1) << ": "; |   88       traceback << (i + 1) << ": "; | 
|   90       std::string name = AdblockPlus::Utils::FromV8String(frame->GetFunctionName
     ()); |   89       std::string name = AdblockPlus::Utils::FromV8String(frame->GetFunctionName
     ()); | 
|   91       if (name.size()) |   90       if (name.size()) | 
|   92         traceback << name; |   91         traceback << name; | 
|   93       else |   92       else | 
|   94         traceback << "/* anonymous */"; |   93         traceback << "/* anonymous */"; | 
|   95       traceback << "() at "; |   94       traceback << "() at "; | 
|   96       traceback << AdblockPlus::Utils::FromV8String(frame->GetScriptName()); |   95       traceback << AdblockPlus::Utils::FromV8String(frame->GetScriptName()); | 
|   97       traceback << ":" << frame->GetLineNumber(); |   96       traceback << ":" << frame->GetLineNumber(); | 
|   98       traceback << std::endl; |   97       traceback << std::endl; | 
|   99     } |   98     } | 
|  100  |   99  | 
|  101     AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem(); |  100     AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem(); | 
|  102     (*callback)(AdblockPlus::LogSystem::LOG_LEVEL_TRACE, traceback.str(), ""); |  101     (*callback)(AdblockPlus::LogSystem::LOG_LEVEL_TRACE, traceback.str(), ""); | 
|  103     return v8::Undefined(); |  | 
|  104   } |  102   } | 
|  105 } |  103 } | 
|  106  |  104  | 
|  107 AdblockPlus::JsValue& AdblockPlus::ConsoleJsObject::Setup( |  105 AdblockPlus::JsValue& AdblockPlus::ConsoleJsObject::Setup( | 
|  108     AdblockPlus::JsEngine& jsEngine, AdblockPlus::JsValue& obj) |  106     AdblockPlus::JsEngine& jsEngine, AdblockPlus::JsValue& obj) | 
|  109 { |  107 { | 
|  110   obj.SetProperty("log", jsEngine.NewCallback(::LogCallback)); |  108   obj.SetProperty("log", jsEngine.NewCallback(::LogCallback)); | 
|  111   obj.SetProperty("debug", jsEngine.NewCallback(::DebugCallback)); |  109   obj.SetProperty("debug", jsEngine.NewCallback(::DebugCallback)); | 
|  112   obj.SetProperty("info", jsEngine.NewCallback(::InfoCallback)); |  110   obj.SetProperty("info", jsEngine.NewCallback(::InfoCallback)); | 
|  113   obj.SetProperty("warn", jsEngine.NewCallback(::WarnCallback)); |  111   obj.SetProperty("warn", jsEngine.NewCallback(::WarnCallback)); | 
|  114   obj.SetProperty("error", jsEngine.NewCallback(::ErrorCallback)); |  112   obj.SetProperty("error", jsEngine.NewCallback(::ErrorCallback)); | 
|  115   obj.SetProperty("trace", jsEngine.NewCallback(::TraceCallback)); |  113   obj.SetProperty("trace", jsEngine.NewCallback(::TraceCallback)); | 
|  116   return obj; |  114   return obj; | 
|  117 } |  115 } | 
| OLD | NEW |