Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/ConsoleJsObject.cpp

Issue 4949583905947648: Issue 1280 - Update v8, the second part (Closed)
Patch Set: Created Oct. 27, 2014, 10:01 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « shell/src/Main.cpp ('k') | src/FileSystemJsObject.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2014 Eyeo GmbH 3 * Copyright (C) 2006-2014 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>& info)
30 { 30 {
31 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 31 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(inf o);
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(info);
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 auto isolate = info.GetIsolate();
45 v8::Local<v8::StackFrame> frame = v8::StackTrace::CurrentStackTrace(isolate, /*frame limit*/1)->GetFrame(0);
45 source << AdblockPlus::Utils::FromV8String(frame->GetScriptName()); 46 source << AdblockPlus::Utils::FromV8String(frame->GetScriptName());
46 source << ":" << frame->GetLineNumber(); 47 source << ":" << frame->GetLineNumber();
47 48
48 AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem(); 49 AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem();
49 (*callback)(logLevel, message.str(), source.str()); 50 (*callback)(logLevel, message.str(), source.str());
50 return v8::Undefined();
51 } 51 }
52 52
53 v8::Handle<v8::Value> LogCallback(const v8::Arguments& arguments) 53 void LogCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
54 { 54 {
55 return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, arguments); 55 DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, info);
56 } 56 }
57 57
58 v8::Handle<v8::Value> DebugCallback(const v8::Arguments& arguments) 58 void DebugCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
59 { 59 {
60 return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, arguments); 60 DoLog(AdblockPlus::LogSystem::LOG_LEVEL_LOG, info);
61 } 61 }
62 62
63 v8::Handle<v8::Value> InfoCallback(const v8::Arguments& arguments) 63 void InfoCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
64 { 64 {
65 return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_INFO, arguments); 65 DoLog(AdblockPlus::LogSystem::LOG_LEVEL_INFO, info);
66 } 66 }
67 67
68 v8::Handle<v8::Value> WarnCallback(const v8::Arguments& arguments) 68 void WarnCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
69 { 69 {
70 return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_WARN, arguments); 70 DoLog(AdblockPlus::LogSystem::LOG_LEVEL_WARN, info);
71 } 71 }
72 72
73 v8::Handle<v8::Value> ErrorCallback(const v8::Arguments& arguments) 73 void ErrorCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
74 { 74 {
75 return DoLog(AdblockPlus::LogSystem::LOG_LEVEL_ERROR, arguments); 75 DoLog(AdblockPlus::LogSystem::LOG_LEVEL_ERROR, info);
76 } 76 }
77 77
78 v8::Handle<v8::Value> TraceCallback(const v8::Arguments& arguments) 78 void TraceCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
79 { 79 {
80 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 80 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(inf o);
81 const AdblockPlus::JsContext context(jsEngine); 81 const AdblockPlus::JsContext context{*jsEngine};
82 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 82 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(info);
83 83
84 std::stringstream traceback; 84 std::stringstream traceback;
85 v8::Local<v8::StackTrace> frames = v8::StackTrace::CurrentStackTrace(100); 85 auto isolate = info.GetIsolate();
86 v8::Local<v8::StackTrace> frames = v8::StackTrace::CurrentStackTrace(isolate , /*frame limit*/100);
86 for (int i = 0, l = frames->GetFrameCount(); i < l; i++) 87 for (int i = 0, l = frames->GetFrameCount(); i < l; i++)
87 { 88 {
88 v8::Local<v8::StackFrame> frame = frames->GetFrame(i); 89 v8::Local<v8::StackFrame> frame = frames->GetFrame(i);
89 traceback << (i + 1) << ": "; 90 traceback << (i + 1) << ": ";
90 std::string name = AdblockPlus::Utils::FromV8String(frame->GetFunctionName ()); 91 std::string name = AdblockPlus::Utils::FromV8String(frame->GetFunctionName ());
91 if (name.size()) 92 if (name.size())
92 traceback << name; 93 traceback << name;
93 else 94 else
94 traceback << "/* anonymous */"; 95 traceback << "/* anonymous */";
95 traceback << "() at "; 96 traceback << "() at ";
96 traceback << AdblockPlus::Utils::FromV8String(frame->GetScriptName()); 97 traceback << AdblockPlus::Utils::FromV8String(frame->GetScriptName());
97 traceback << ":" << frame->GetLineNumber(); 98 traceback << ":" << frame->GetLineNumber();
98 traceback << std::endl; 99 traceback << std::endl;
99 } 100 }
100 101
101 AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem(); 102 AdblockPlus::LogSystemPtr callback = jsEngine->GetLogSystem();
102 (*callback)(AdblockPlus::LogSystem::LOG_LEVEL_TRACE, traceback.str(), ""); 103 (*callback)(AdblockPlus::LogSystem::LOG_LEVEL_TRACE, traceback.str(), "");
103 return v8::Undefined();
104 } 104 }
105 } 105 }
106 106
107 AdblockPlus::JsValuePtr AdblockPlus::ConsoleJsObject::Setup( 107 AdblockPlus::JsValuePtr AdblockPlus::ConsoleJsObject::Setup(
108 AdblockPlus::JsEnginePtr jsEngine, AdblockPlus::JsValuePtr obj) 108 AdblockPlus::JsEnginePtr jsEngine, AdblockPlus::JsValuePtr obj)
109 { 109 {
110 obj->SetProperty("log", jsEngine->NewCallback(::LogCallback)); 110 obj->SetProperty("log", jsEngine->NewCallback(::LogCallback));
111 obj->SetProperty("debug", jsEngine->NewCallback(::DebugCallback)); 111 obj->SetProperty("debug", jsEngine->NewCallback(::DebugCallback));
112 obj->SetProperty("info", jsEngine->NewCallback(::InfoCallback)); 112 obj->SetProperty("info", jsEngine->NewCallback(::InfoCallback));
113 obj->SetProperty("warn", jsEngine->NewCallback(::WarnCallback)); 113 obj->SetProperty("warn", jsEngine->NewCallback(::WarnCallback));
114 obj->SetProperty("error", jsEngine->NewCallback(::ErrorCallback)); 114 obj->SetProperty("error", jsEngine->NewCallback(::ErrorCallback));
115 obj->SetProperty("trace", jsEngine->NewCallback(::TraceCallback)); 115 obj->SetProperty("trace", jsEngine->NewCallback(::TraceCallback));
116 return obj; 116 return obj;
117 } 117 }
OLDNEW
« no previous file with comments | « shell/src/Main.cpp ('k') | src/FileSystemJsObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld