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