12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // Copyright 2018 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/ukm/app_source_url_recorder.h"
- #include "base/atomic_sequence_num.h"
- #include "components/crx_file/id_util.h"
- #include "services/metrics/public/cpp/delegating_ukm_recorder.h"
- #include "services/metrics/public/cpp/ukm_source_id.h"
- #include "url/gurl.h"
- namespace ukm {
- SourceId AssignNewAppId() {
- static base::AtomicSequenceNumber seq;
- return ConvertToSourceId(seq.GetNext() + 1, SourceIdType::APP_ID);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForChromeApp(
- const std::string& app_id) {
- DCHECK(!app_id.empty());
- GURL url("app://" + app_id);
- return GetSourceIdForUrl(url, AppType::kChromeApp);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForChromeExtension(
- const std::string& id) {
- GURL url("chrome-extension://" + id);
- return GetSourceIdForUrl(url, AppType::kExtension);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForArcPackageName(
- const std::string& package_name) {
- DCHECK(!package_name.empty());
- GURL url("app://" + package_name);
- return GetSourceIdForUrl(url, AppType::kArc);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForArc(
- const std::string& package_name) {
- const std::string package_name_hash =
- crx_file::id_util::GenerateId(package_name);
- GURL url("app://play/" + package_name_hash);
- return GetSourceIdForUrl(url, AppType::kArc);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForPWA(const GURL& url) {
- return GetSourceIdForUrl(url, AppType::kPWA);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForBorealis(const std::string& app) {
- GURL url("app://borealis/" + app);
- return GetSourceIdForUrl(url, AppType::kBorealis);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForCrostini(
- const std::string& desktop_id,
- const std::string& app_name) {
- GURL url("app://" + desktop_id + "/" + app_name);
- return GetSourceIdForUrl(url, AppType::kCrostini);
- }
- SourceId AppSourceUrlRecorder::GetSourceIdForUrl(const GURL& url,
- AppType app_type) {
- ukm::DelegatingUkmRecorder* const recorder =
- ukm::DelegatingUkmRecorder::Get();
- if (!recorder)
- return kInvalidSourceId;
- const SourceId source_id = AssignNewAppId();
- if (base::FeatureList::IsEnabled(kUkmAppLogging)) {
- recorder->UpdateAppURL(source_id, url, app_type);
- }
- return source_id;
- }
- void AppSourceUrlRecorder::MarkSourceForDeletion(SourceId source_id) {
- if (GetSourceIdType(source_id) != SourceIdType::APP_ID) {
- DLOG(FATAL) << "AppSourceUrlRecorder::MarkSourceForDeletion invoked on "
- << "non-APP_ID type SourceId: " << source_id;
- return;
- }
- ukm::DelegatingUkmRecorder* const recorder =
- ukm::DelegatingUkmRecorder::Get();
- if (recorder)
- recorder->MarkSourceForDeletion(source_id);
- }
- } // namespace ukm
|