Index: extensions/browser/api/cast_channel/cast_channel_api.cc |
diff --git a/extensions/browser/api/cast_channel/cast_channel_api.cc b/extensions/browser/api/cast_channel/cast_channel_api.cc |
index e992a49a16ba57cf2ad7243c006b840ea9c86681..9ad9ee8e703fd57a5cb27485d9908f5b5a5ffa80 100644 |
--- a/extensions/browser/api/cast_channel/cast_channel_api.cc |
+++ b/extensions/browser/api/cast_channel/cast_channel_api.cc |
@@ -453,4 +453,35 @@ void CastChannelCloseFunction::OnClose(int result) { |
AsyncWorkCompleted(); |
} |
+CastChannelGetLogsFunction::CastChannelGetLogsFunction() { |
+} |
+ |
+CastChannelGetLogsFunction::~CastChannelGetLogsFunction() { |
+} |
+ |
+bool CastChannelGetLogsFunction::PrePrepare() { |
+ api_ = CastChannelAPI::Get(browser_context()); |
+ return CastChannelAsyncApiFunction::PrePrepare(); |
+} |
+ |
+bool CastChannelGetLogsFunction::Prepare() { |
+ return true; |
+} |
+ |
+void CastChannelGetLogsFunction::AsyncWorkStart() { |
+ DCHECK(api_); |
+ |
+ size_t length = 0; |
+ scoped_ptr<char[]> out = api_->GetLogger()->GetLogs(&length); |
+ if (out.get()) { |
+ SetResult(new base::BinaryValue(out.Pass(), length)); |
+ } else { |
+ SetError("Unable to get logs."); |
+ } |
+ |
+ api_->GetLogger()->Reset(); |
+ |
+ AsyncWorkCompleted(); |
+} |
+ |
} // namespace extensions |