File: whitelist.cc

package info (click to toggle)
chromium-browser 57.0.2987.98-1~deb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 2,637,852 kB
  • ctags: 2,544,394
  • sloc: cpp: 12,815,961; ansic: 3,676,222; python: 1,147,112; asm: 526,608; java: 523,212; xml: 286,794; perl: 92,654; sh: 86,408; objc: 73,271; makefile: 27,698; cs: 18,487; yacc: 13,031; tcl: 12,957; pascal: 4,875; ml: 4,716; lex: 3,904; sql: 3,862; ruby: 1,982; lisp: 1,508; php: 1,368; exp: 404; awk: 325; csh: 117; jsp: 39; sed: 37
file content (137 lines) | stat: -rw-r--r-- 4,367 bytes parent folder | download
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// 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.

#include "chrome/browser/extensions/component_extensions_whitelist/whitelist.h"

#include <stddef.h>

#include "base/logging.h"
#include "base/macros.h"
#include "build/build_config.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/features.h"
#include "chrome/grit/browser_resources.h"
#include "extensions/common/constants.h"
#include "printing/features/features.h"

#if BUILDFLAG(ENABLE_APP_LIST) && defined(OS_CHROMEOS)
#include "chrome/browser/ui/app_list/google_now_extension.h"
#endif

#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.h"
#include "components/chrome_apps/grit/chrome_apps_resources.h"
#include "ui/file_manager/grit/file_manager_resources.h"
#include "ui/keyboard/grit/keyboard_resources.h"
#endif

namespace extensions {

bool IsComponentExtensionWhitelisted(const std::string& extension_id) {
  const char* const kAllowed[] = {
    extension_misc::kHotwordSharedModuleId,
    extension_misc::kInAppPaymentsSupportAppId,
#if defined(ENABLE_MEDIA_ROUTER)
    extension_misc::kMediaRouterStableExtensionId,
#endif  // defined(ENABLE_MEDIA_ROUTER)
    extension_misc::kPdfExtensionId,
#if defined(OS_CHROMEOS)
    extension_misc::kChromeVoxExtensionId,
    extension_misc::kSelectToSpeakExtensionId,
    extension_misc::kSpeechSynthesisExtensionId,
    extension_misc::kZIPUnpackerExtensionId,
#endif
  };

  for (size_t i = 0; i < arraysize(kAllowed); ++i) {
    if (extension_id == kAllowed[i])
      return true;
  }

#if BUILDFLAG(ENABLE_APP_LIST) && defined(OS_CHROMEOS)
  std::string google_now_extension_id;
  if (GetGoogleNowExtensionId(&google_now_extension_id) &&
      google_now_extension_id == extension_id) {
    return true;
  }
#endif

#if defined(OS_CHROMEOS)
  if (chromeos::ComponentExtensionIMEManagerImpl::IsIMEExtensionID(
          extension_id)) {
    return true;
  }
#endif
  LOG(ERROR) << "Component extension with id " << extension_id << " not in "
             << "whitelist and is not being loaded as a result.";
  NOTREACHED();
  return false;
}

bool IsComponentExtensionWhitelisted(int manifest_resource_id) {
  switch (manifest_resource_id) {
    // Please keep the list in alphabetical order.
    case IDR_BOOKMARKS_MANIFEST:
#if BUILDFLAG(ENABLE_APP_LIST)
    case IDR_CHROME_APP_MANIFEST:
#endif
#if BUILDFLAG(ENABLE_PRINTING)
    case IDR_CLOUDPRINT_MANIFEST:
#endif
    case IDR_CRYPTOTOKEN_MANIFEST:
    case IDR_FEEDBACK_MANIFEST:
    case IDR_GAIA_AUTH_MANIFEST:
#if defined(ENABLE_GOOGLE_NOW)
    case IDR_GOOGLE_NOW_MANIFEST:
#endif
#if BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
    case IDR_HANGOUT_SERVICES_MANIFEST:
#endif
#if defined(ENABLE_HOTWORDING)
    case IDR_HOTWORD_AUDIO_VERIFICATION_MANIFEST:
    case IDR_HOTWORD_MANIFEST:
#endif
    case IDR_IDENTITY_API_SCOPE_APPROVAL_MANIFEST:
#if defined(OS_CHROMEOS)
    case IDR_IMAGE_LOADER_MANIFEST:
#endif
    case IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST:
    case IDR_WEBSTORE_MANIFEST:

#if defined(OS_CHROMEOS)
    // Separate ChromeOS list, as it is quite large.
    case IDR_ARC_SUPPORT_MANIFEST:
    case IDR_AUDIO_PLAYER_MANIFEST:
    case IDR_CHROME_APPS_WEBSTORE_WIDGET_MANIFEST:
    case IDR_CONNECTIVITY_DIAGNOSTICS_LAUNCHER_MANIFEST:
    case IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST:
    case IDR_CROSH_BUILTIN_MANIFEST:
    case IDR_DEMO_APP_MANIFEST:
    case IDR_EASY_UNLOCK_MANIFEST:
    case IDR_EASY_UNLOCK_MANIFEST_SIGNIN:
    case IDR_ECHO_MANIFEST:
    case IDR_FILEMANAGER_MANIFEST:
    case IDR_FIRST_RUN_DIALOG_MANIFEST:
    case IDR_GALLERY_MANIFEST:
    case IDR_KEYBOARD_MANIFEST:
    case IDR_MOBILE_MANIFEST:
    case IDR_VIDEO_PLAYER_MANIFEST:
    case IDR_WALLPAPERMANAGER_MANIFEST:
#if defined(GOOGLE_CHROME_BUILD)
    case IDR_GENIUS_APP_MANIFEST:
    case IDR_HELP_MANIFEST:
    case IDR_QUICKOFFICE_MANIFEST:
#endif  // defined(GOOGLE_CHROME_BUILD)
#endif  // defined(OS_CHROMEOS)
      return true;
  }

  LOG(ERROR) << "Component extension with manifest resource id "
             << manifest_resource_id << " not in whitelist and is not being "
             << "loaded as a result.";
  NOTREACHED();
  return false;
}

}  // namespace extensions