1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// found in the LICENSE file.
4558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
5558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "chrome/browser/chromeos/extensions/file_manager/private_api_base.h"
6558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
7558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "base/strings/string_number_conversions.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/drive/event_logger.h"
10558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
11424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace extensions {
12558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochnamespace {
13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
14558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochconst int kSlowOperationThresholdMs = 500;  // In ms.
15558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
16558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}  // namespace
17558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
18558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochLoggedAsyncExtensionFunction::LoggedAsyncExtensionFunction()
19558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch    : log_on_completion_(false) {
20558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  start_time_  = base::Time::Now();
21558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
23558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochLoggedAsyncExtensionFunction::~LoggedAsyncExtensionFunction() {
24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
25558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
26558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochvoid LoggedAsyncExtensionFunction::SendResponse(bool success) {
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile());
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (logger) {
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int64 elapsed = (base::Time::Now() - start_time_).InMilliseconds();
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    if (log_on_completion_) {
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      logger->Log(logging::LOG_INFO,
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                  "%s[%d] %s. (elapsed time: %sms)",
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                  name().c_str(),
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                  request_id(),
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                  success ? "succeeded" : "failed",
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                  base::Int64ToString(elapsed).c_str());
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    } else if (elapsed >= kSlowOperationThresholdMs) {
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      logger->Log(
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          logging::LOG_WARNING,
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          "PEFORMANCE WARNING: %s[%d] was slow. (elapsed time: %sms)",
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          name().c_str(),
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          request_id(),
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          base::Int64ToString(elapsed).c_str());
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
45558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  }
461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ChromeAsyncExtensionFunction::SendResponse(success);
47558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
48558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}  // namespace extensions
50