1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/extensions/extension_ui_util.h"
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/prefs/pref_service.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/common/extensions/extension_constants.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/common/pref_names.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "extensions/browser/extension_util.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/common/constants.h"
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "extensions/common/extension.h"
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace extensions {
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace {
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool IsBlockedByPolicy(const Extension* app, content::BrowserContext* context) {
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  Profile* profile = Profile::FromBrowserContext(context);
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DCHECK(profile);
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return (app->id() == extensions::kWebStoreAppId ||
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      app->id() == extension_misc::kEnterpriseWebStoreAppId) &&
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      profile->GetPrefs()->GetBoolean(prefs::kHideWebStoreIcon);
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace ui_util {
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool ShouldDisplayInAppLauncher(const Extension* extension,
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                content::BrowserContext* context) {
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  return CanDisplayInAppLauncher(extension, context) &&
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)         !util::IsEphemeralApp(extension->id(), context);
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)bool CanDisplayInAppLauncher(const Extension* extension,
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                             content::BrowserContext* context) {
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return extension->ShouldDisplayInAppLauncher() &&
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)         !IsBlockedByPolicy(extension, context);
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool ShouldDisplayInNewTabPage(const Extension* extension,
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                               content::BrowserContext* context) {
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return extension->ShouldDisplayInNewTabPage() &&
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      !IsBlockedByPolicy(extension, context) &&
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      !util::IsEphemeralApp(extension->id(), context);
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool ShouldDisplayInExtensionSettings(const Extension* extension,
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                      content::BrowserContext* context) {
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return extension->ShouldDisplayInExtensionSettings() &&
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      !util::IsEphemeralApp(extension->id(), context);
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool ShouldNotBeVisible(const Extension* extension,
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                        content::BrowserContext* context) {
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return extension->ShouldNotBeVisible() ||
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      util::IsEphemeralApp(extension->id(), context);
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace ui_util
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace extensions
65