| OLD | NEW | 
|   1 // Copyright 2013 The Chromium Authors. All rights reserved. |   1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
|   2 // Use of this source code is governed by a BSD-style license that can be |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4  |   4  | 
|   5 #include "chrome/renderer/extensions/logging_native_handler.h" |   5 #include "chrome/renderer/extensions/logging_native_handler.h" | 
|   6  |   6  | 
|   7 #include "base/logging.h" |   7 #include "base/logging.h" | 
|   8 #include "base/strings/stringprintf.h" |   8 #include "base/strings/stringprintf.h" | 
|   9  |   9  | 
|  10 namespace extensions { |  10 namespace extensions { | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  42 } |  42 } | 
|  43  |  43  | 
|  44 void LoggingNativeHandler::DcheckIsOn( |  44 void LoggingNativeHandler::DcheckIsOn( | 
|  45     const v8::FunctionCallbackInfo<v8::Value>& args) { |  45     const v8::FunctionCallbackInfo<v8::Value>& args) { | 
|  46   args.GetReturnValue().Set(DCHECK_IS_ON()); |  46   args.GetReturnValue().Set(DCHECK_IS_ON()); | 
|  47 } |  47 } | 
|  48  |  48  | 
|  49 void LoggingNativeHandler::Log( |  49 void LoggingNativeHandler::Log( | 
|  50     const v8::FunctionCallbackInfo<v8::Value>& args) { |  50     const v8::FunctionCallbackInfo<v8::Value>& args) { | 
|  51   CHECK_EQ(1, args.Length()); |  51   CHECK_EQ(1, args.Length()); | 
|  52   LOG(INFO) << *v8::String::AsciiValue(args[0]); |  52   LOG(INFO) << *v8::String::Utf8Value(args[0]); | 
|  53 } |  53 } | 
|  54  |  54  | 
|  55 void LoggingNativeHandler::Warning( |  55 void LoggingNativeHandler::Warning( | 
|  56     const v8::FunctionCallbackInfo<v8::Value>& args) { |  56     const v8::FunctionCallbackInfo<v8::Value>& args) { | 
|  57   CHECK_EQ(1, args.Length()); |  57   CHECK_EQ(1, args.Length()); | 
|  58   LOG(WARNING) << *v8::String::AsciiValue(args[0]); |  58   LOG(WARNING) << *v8::String::Utf8Value(args[0]); | 
|  59 } |  59 } | 
|  60  |  60  | 
|  61 void LoggingNativeHandler::ParseArgs( |  61 void LoggingNativeHandler::ParseArgs( | 
|  62     const v8::FunctionCallbackInfo<v8::Value>& args, |  62     const v8::FunctionCallbackInfo<v8::Value>& args, | 
|  63     bool* check_value, |  63     bool* check_value, | 
|  64     std::string* error_message) { |  64     std::string* error_message) { | 
|  65   CHECK_LE(args.Length(), 2); |  65   CHECK_LE(args.Length(), 2); | 
|  66   *check_value = args[0]->BooleanValue(); |  66   *check_value = args[0]->BooleanValue(); | 
|  67   if (args.Length() == 2) { |  67   if (args.Length() == 2) { | 
|  68     *error_message = "Error: " + std::string( |  68     *error_message = "Error: " + std::string( | 
|  69         *v8::String::AsciiValue(args[1])); |  69         *v8::String::Utf8Value(args[1])); | 
|  70   } |  70   } | 
|  71  |  71  | 
|  72   v8::Handle<v8::StackTrace> stack_trace = |  72   v8::Handle<v8::StackTrace> stack_trace = | 
|  73       v8::StackTrace::CurrentStackTrace(args.GetIsolate(), 10); |  73       v8::StackTrace::CurrentStackTrace(args.GetIsolate(), 10); | 
|  74   if (stack_trace.IsEmpty() || stack_trace->GetFrameCount() <= 0) { |  74   if (stack_trace.IsEmpty() || stack_trace->GetFrameCount() <= 0) { | 
|  75     *error_message += "\n    <no stack trace>"; |  75     *error_message += "\n    <no stack trace>"; | 
|  76   } else { |  76   } else { | 
|  77     for (size_t i = 0; i < (size_t) stack_trace->GetFrameCount(); ++i) { |  77     for (size_t i = 0; i < (size_t) stack_trace->GetFrameCount(); ++i) { | 
|  78       v8::Handle<v8::StackFrame> frame = stack_trace->GetFrame(i); |  78       v8::Handle<v8::StackFrame> frame = stack_trace->GetFrame(i); | 
|  79       CHECK(!frame.IsEmpty()); |  79       CHECK(!frame.IsEmpty()); | 
|  80       *error_message += base::StringPrintf("\n    at %s (%s:%d:%d)", |  80       *error_message += base::StringPrintf("\n    at %s (%s:%d:%d)", | 
|  81           ToStringOrDefault(frame->GetFunctionName(), "<anonymous>").c_str(), |  81           ToStringOrDefault(frame->GetFunctionName(), "<anonymous>").c_str(), | 
|  82           ToStringOrDefault(frame->GetScriptName(), "<anonymous>").c_str(), |  82           ToStringOrDefault(frame->GetScriptName(), "<anonymous>").c_str(), | 
|  83           frame->GetLineNumber(), |  83           frame->GetLineNumber(), | 
|  84           frame->GetColumn()); |  84           frame->GetColumn()); | 
|  85     } |  85     } | 
|  86   } |  86   } | 
|  87 } |  87 } | 
|  88  |  88  | 
|  89 std::string LoggingNativeHandler::ToStringOrDefault( |  89 std::string LoggingNativeHandler::ToStringOrDefault( | 
|  90     const v8::Handle<v8::String>& v8_string, |  90     const v8::Handle<v8::String>& v8_string, | 
|  91     const std::string& dflt) { |  91     const std::string& dflt) { | 
|  92   if (v8_string.IsEmpty()) |  92   if (v8_string.IsEmpty()) | 
|  93     return dflt; |  93     return dflt; | 
|  94   std::string ascii_value = *v8::String::AsciiValue(v8_string); |  94   std::string ascii_value = *v8::String::Utf8Value(v8_string); | 
|  95   return ascii_value.empty() ? dflt : ascii_value; |  95   return ascii_value.empty() ? dflt : ascii_value; | 
|  96 } |  96 } | 
|  97  |  97  | 
|  98 }  // namespace extensions |  98 }  // namespace extensions | 
| OLD | NEW |