File: logging_util.cc

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (91 lines) | stat: -rw-r--r-- 3,537 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/feature_list.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/tabs/organization/tab_data.h"
#include "chrome/browser/ui/tabs/organization/tab_organization.h"
#include "chrome/browser/ui/tabs/organization/tab_organization_session.h"
#include "chrome/browser/ui/ui_features.h"
#include "components/optimization_guide/proto/features/tab_organization.pb.h"

void AddOrganizationDetailsToQualityOrganization(
    optimization_guide::proto::TabOrganizationQuality* quality,
    const TabOrganization* organization,
    const TabOrganizationResponse::Organization* response_organization) {
  CHECK(quality && response_organization);

  optimization_guide::proto::TabOrganizationQuality_Organization*
      quality_organization = quality->add_organizations();
  CHECK(quality_organization != nullptr);

  if (!organization) {
    quality_organization->set_choice(
        optimization_guide::proto::
            TabOrganizationQuality_Organization_Choice_NOT_USED);
    return;
  }

  switch (organization->choice()) {
    case TabOrganization::UserChoice::kRejected: {
      quality_organization->set_choice(
          optimization_guide::proto::
              TabOrganizationQuality_Organization_Choice_REJECTED);
      break;
    }
    case TabOrganization::UserChoice::kAccepted: {
      quality_organization->set_choice(
          optimization_guide::proto::
              TabOrganizationQuality_Organization_Choice_ACCEPTED);

      optimization_guide::proto::TabOrganizationQuality_Organization_Label*
          label = quality_organization->mutable_label();
      label->set_edited(organization->names().size() == 0 ||
                        organization->names()[0] !=
                            organization->GetDisplayName());

      for (const TabData::TabID removed_tab_id :
           organization->user_removed_tab_ids()) {
        quality_organization->add_removed_tab_ids(removed_tab_id);
      }

      break;
    }
    case TabOrganization::UserChoice::kNoChoice: {
    }
  }
}

void AddSessionDetailsToQuality(
    optimization_guide::proto::TabOrganizationQuality* quality,
    const TabOrganizationSession* session) {
  CHECK(session && session->request() && session->request()->response());
  quality->set_user_feedback(session->feedback());

  for (const auto& response_organization :
       session->request()->response()->organizations) {
    std::optional<TabOrganization::ID> response_organization_id =
        response_organization.organization_id;
    TabOrganization* matching_organization_ptr = nullptr;

    if (response_organization_id.has_value()) {
      const auto matching_organization = std::find_if(
          session->tab_organizations().begin(),
          session->tab_organizations().end(),
          [response_organization_id](
              const std::unique_ptr<TabOrganization>& check_organization) {
            return check_organization->organization_id() ==
                   response_organization_id;
          });
      if (matching_organization != session->tab_organizations().end() &&
          matching_organization->get()->choice() !=
              TabOrganization::UserChoice::kNoChoice) {
        matching_organization_ptr = matching_organization->get();
      }
    }

    AddOrganizationDetailsToQualityOrganization(
        quality, matching_organization_ptr, &response_organization);
  }
}