// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/browser/download/download_net_log_parameters.h" #include "base/basictypes.h" #include "base/logging.h" #include "base/string_number_conversions.h" #include "base/values.h" #include "content/browser/download/interrupt_reasons.h" #include "net/base/net_errors.h" namespace download_net_logs { namespace { static const char* download_type_names[] = { "NEW_DOWNLOAD", "HISTORY_IMPORT", "SAVE_PAGE_AS" }; static const char* download_safety_names[] = { "SAFE", "DANGEROUS", "DANGEROUS_BUT_VALIDATED" }; static const char* download_danger_names[] = { "NOT_DANGEROUS", "DANGEROUS_FILE", "DANGEROUS_URL", "DANGEROUS_CONTENT", "MAYBE_DANGEROUS_CONTENT" }; COMPILE_ASSERT(ARRAYSIZE_UNSAFE(download_type_names) == SRC_SAVE_PAGE_AS + 1, download_type_enum_has_changed); COMPILE_ASSERT(ARRAYSIZE_UNSAFE(download_safety_names) == content::DownloadItem::DANGEROUS_BUT_VALIDATED + 1, downloaditem_safety_state_enum_has_changed); COMPILE_ASSERT(ARRAYSIZE_UNSAFE(download_danger_names) == content::DOWNLOAD_DANGER_TYPE_MAX, download_danger_enum_has_changed); } // namespace ItemActivatedParameters::ItemActivatedParameters( DownloadType download_type, int64 id, const std::string& original_url, const std::string& final_url, const std::string& file_name, content::DownloadDangerType danger_type, content::DownloadItem::SafetyState safety_state, int64 start_offset) : type_(download_type), id_(id), original_url_(original_url), final_url_(final_url), file_name_(file_name), danger_type_(danger_type), safety_state_(safety_state), start_offset_(start_offset) { } ItemActivatedParameters::~ItemActivatedParameters() { } Value* ItemActivatedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("type", download_type_names[type_]); dict->SetString("id", base::Int64ToString(id_)); dict->SetString("original_url", original_url_); dict->SetString("final_url", final_url_); dict->SetString("file_name", file_name_); dict->SetString("danger_type", download_danger_names[danger_type_]); dict->SetString("safety_state", download_safety_names[safety_state_]); dict->SetString("start_offset", base::Int64ToString(start_offset_)); return dict; } ItemCheckedParameters::ItemCheckedParameters( content::DownloadDangerType danger_type, content::DownloadItem::SafetyState safety_state) : danger_type_(danger_type), safety_state_(safety_state) { } Value* ItemCheckedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("danger_type", download_danger_names[danger_type_]); dict->SetString("safety_state", download_safety_names[safety_state_]); return dict; } ItemInHistoryParameters::ItemInHistoryParameters(int64 handle) : db_handle_(handle) { } Value* ItemInHistoryParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("db_handle", base::Int64ToString(db_handle_)); return dict; } ItemUpdatedParameters::ItemUpdatedParameters(int64 bytes_so_far) : bytes_so_far_(bytes_so_far) { } Value* ItemUpdatedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("bytes_so_far", base::Int64ToString(bytes_so_far_)); return dict; } ItemRenamedParameters::ItemRenamedParameters( const std::string& old_filename, const std::string& new_filename) : old_filename_(old_filename), new_filename_(new_filename) { } Value* ItemRenamedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("old_filename", old_filename_); dict->SetString("new_filename", new_filename_); return dict; } ItemInterruptedParameters::ItemInterruptedParameters( InterruptReason reason, int64 bytes_so_far, const std::string& hash_state) : reason_(reason), bytes_so_far_(bytes_so_far), hash_state_(hash_state) { } Value* ItemInterruptedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("interrupt_reason", InterruptReasonDebugString(reason_)); dict->SetString("bytes_so_far", base::Int64ToString(bytes_so_far_)); dict->SetString("hash_state", base::HexEncode(hash_state_.data(), hash_state_.size())); return dict; } ItemFinishedParameters::ItemFinishedParameters( int64 bytes_so_far, const std::string& final_hash) : bytes_so_far_(bytes_so_far), final_hash_(final_hash) { } Value* ItemFinishedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("bytes_so_far", base::Int64ToString(bytes_so_far_)); dict->SetString("final_hash", base::HexEncode(final_hash_.data(), final_hash_.size())); return dict; } ItemCanceledParameters::ItemCanceledParameters( int64 bytes_so_far, const std::string& hash_state) : bytes_so_far_(bytes_so_far), hash_state_(hash_state) { } Value* ItemCanceledParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("bytes_so_far", base::Int64ToString(bytes_so_far_)); dict->SetString("hash_state", base::HexEncode(hash_state_.data(), hash_state_.size())); return dict; } FileOpenedParameters::FileOpenedParameters(const std::string& file_name, int64 start_offset) : file_name_(file_name), start_offset_(start_offset) { } Value* FileOpenedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("file_name", file_name_); dict->SetString("start_offset", base::Int64ToString(start_offset_)); return dict; } FileRenamedParameters::FileRenamedParameters( const std::string& old_filename, const std::string& new_filename) : old_filename_(old_filename), new_filename_(new_filename) { } Value* FileRenamedParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("old_filename", old_filename_); dict->SetString("new_filename", new_filename_); return dict; } FileErrorParameters::FileErrorParameters(const std::string& operation, net::Error net_error) : operation_(operation), net_error_(net_error) { } Value* FileErrorParameters::ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("operation", operation_); dict->SetInteger("net_error", net_error_); return dict; } } // namespace download_net_logs