blob: 936d0e4c4cbdef4ae960b3913011951ec8618941 [file] [log] [blame]
// Copyright 2021 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 "components/optimization_guide/core/model_util.h"
#include "base/base64.h"
#include "base/containers/flat_set.h"
#include "base/notreached.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "net/base/url_util.h"
#include "url/url_canon.h"
namespace optimization_guide {
// These names are persisted to histograms, so don't change them.
std::string GetStringNameForOptimizationTarget(
optimization_guide::proto::OptimizationTarget optimization_target) {
switch (optimization_target) {
case proto::OPTIMIZATION_TARGET_UNKNOWN:
return "Unknown";
case proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD:
return "PainfulPageLoad";
case proto::OPTIMIZATION_TARGET_LANGUAGE_DETECTION:
return "LanguageDetection";
case proto::OPTIMIZATION_TARGET_PAGE_TOPICS:
return "PageTopics";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_NEW_TAB:
return "SegmentationNewTab";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_SHARE:
return "SegmentationShare";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_VOICE:
return "SegmentationVoice";
case proto::OPTIMIZATION_TARGET_MODEL_VALIDATION:
return "ModelValidation";
case proto::OPTIMIZATION_TARGET_PAGE_ENTITIES:
return "PageEntities";
case proto::OPTIMIZATION_TARGET_NOTIFICATION_PERMISSION_PREDICTIONS:
return "NotificationPermissions";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_DUMMY:
return "SegmentationDummyFeature";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_CHROME_START_ANDROID:
return "SegmentationChromeStartAndroid";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_QUERY_TILES:
return "SegmentationQueryTiles";
case proto::OPTIMIZATION_TARGET_PAGE_VISIBILITY:
return "PageVisibility";
case proto::OPTIMIZATION_TARGET_AUTOFILL_ASSISTANT:
return "AutofillAssistant";
case proto::OPTIMIZATION_TARGET_PAGE_TOPICS_V2:
return "PageTopicsV2";
case proto::OPTIMIZATION_TARGET_SEGMENTATION_CHROME_LOW_USER_ENGAGEMENT:
return "SegmentationChromeLowUserEngagement";
// Whenever a new value is added, make sure to add it to the OptTarget
// variant list in
// //tools/metrics/histograms/metadata/optimization/histograms.xml.
}
NOTREACHED();
return std::string();
}
absl::optional<base::FilePath> StringToFilePath(const std::string& str_path) {
if (str_path.empty())
return absl::nullopt;
#if BUILDFLAG(IS_WIN)
return base::FilePath(base::UTF8ToWide(str_path));
#else
return base::FilePath(str_path);
#endif
}
std::string FilePathToString(const base::FilePath& file_path) {
#if BUILDFLAG(IS_WIN)
return base::WideToUTF8(file_path.value());
#else
return file_path.value();
#endif
}
base::FilePath GetBaseFileNameForModels() {
return base::FilePath(FILE_PATH_LITERAL("model.tflite"));
}
} // namespace optimization_guide