blob: c33f4aedeea7a8d875bb152e398db429f84d85fe [file] [log] [blame]
// Copyright 2015 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.
//
// Helper functions for SafeBrowsingApiHandlerImpl. Separated out for tests.
#ifndef COMPONENTS_SAFE_BROWSING_ANDROID_SAFE_BROWSING_API_HANDLER_UTIL_H_
#define COMPONENTS_SAFE_BROWSING_ANDROID_SAFE_BROWSING_API_HANDLER_UTIL_H_
#include <string>
#include "components/safe_browsing/db/util.h"
namespace safe_browsing {
// These match what SafeBrowsingApiHandler.java uses for |resultStatus|
enum RemoteCallResultStatus {
RESULT_STATUS_INTERNAL_ERROR = -1,
RESULT_STATUS_SUCCESS = 0,
RESULT_STATUS_TIMEOUT = 1,
};
// Threat types as per the Java code.
// This must match those in GMS's SafeBrowsingThreat.java.
enum JavaThreatTypes {
JAVA_THREAT_TYPE_UNWANTED_SOFTWARE = 3,
JAVA_THREAT_TYPE_POTENTIALLY_HARMFUL_APPLICATION = 4,
JAVA_THREAT_TYPE_SOCIAL_ENGINEERING = 5,
JAVA_THREAT_TYPE_SUBRESOURCE_FILTER = 13,
JAVA_THREAT_TYPE_BILLING = 15,
JAVA_THREAT_TYPE_MAX_VALUE
};
// Do not reorder or delete entries, and make sure changes here are reflected
// in SB2RemoteCallResult histogram.
enum UmaRemoteCallResult {
UMA_STATUS_INTERNAL_ERROR = 0,
UMA_STATUS_TIMEOUT = 1,
UMA_STATUS_SAFE = 2,
UMA_STATUS_MATCH = 3,
UMA_STATUS_JSON_EMPTY = 4,
UMA_STATUS_JSON_FAILED_TO_PARSE = 5,
UMA_STATUS_JSON_UNKNOWN_THREAT = 6,
UMA_STATUS_UNSUPPORTED = 7,
UMA_STATUS_MAX_VALUE
};
// This parses the JSON from the GMSCore API and then:
// 1) Picks the most severe threat type
// 2) Parses that threat's key/value pairs into the metadata struct.
//
// If anything fails to parse, this sets the threat to "safe". The caller
// should report the return value via UMA.
UmaRemoteCallResult ParseJsonFromGMSCore(const std::string& metadata_str,
SBThreatType* worst_threat,
ThreatMetadata* metadata);
// DEPRECATED. Will be removed.
UmaRemoteCallResult ParseJsonToThreatAndPB(const std::string& metadata_str,
SBThreatType* worst_threat,
std::string* metadata_pb_str);
} // namespace safe_browsing
#endif // COMPONENTS_SAFE_BROWSING_ANDROID_SAFE_BROWSING_API_HANDLER_UTIL_H_