blob: 2ddc318a2b73808a522d9f0a51fe46a3f2ccdf44 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/sharing_hub/sharing_hub_features.h"
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_context.h"
namespace sharing_hub {
namespace {
// Whether the sharing hub feature should be disabled by policy.
bool SharingHubDisabledByPolicy(content::BrowserContext* context) {
#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS)
const PrefService* prefs = Profile::FromBrowserContext(context)->GetPrefs();
return !prefs->GetBoolean(prefs::kDesktopSharingHubEnabled);
#else
return false;
#endif
}
// Whether screenshots-related features should be disabled by policy.
// Currently used by desktop.
// TODO(crbug.com/40798792): possibly apply to Android features.
bool ScreenshotsDisabledByPolicy(content::BrowserContext* context) {
const PrefService* prefs = Profile::FromBrowserContext(context)->GetPrefs();
return prefs->GetBoolean(prefs::kDisableScreenshots);
}
} // namespace
bool SharingHubOmniboxEnabled(content::BrowserContext* context) {
#if BUILDFLAG(IS_CHROMEOS)
return false;
#else
Profile* profile = Profile::FromBrowserContext(context);
if (!profile)
return false;
return !SharingHubDisabledByPolicy(context) &&
!profile->IsIncognitoProfile() && !profile->IsGuestSession();
#endif
}
bool DesktopScreenshotsFeatureEnabled(content::BrowserContext* context) {
return base::FeatureList::IsEnabled(kDesktopScreenshots) &&
!ScreenshotsDisabledByPolicy(context);
}
bool SharingIsDisabledByPolicy(content::BrowserContext* context) {
// TODO(ellyjones): should we separate out sharing hub from generic sharing?
// Or should we rename the policy to be more general?
return SharingHubDisabledByPolicy(context);
}
bool HasPageAction(content::BrowserContext* context, bool is_popup_mode) {
#if BUILDFLAG(IS_CHROMEOS)
return true;
#else
return (SharingHubOmniboxEnabled(context) && !is_popup_mode);
#endif
}
BASE_FEATURE(kDesktopScreenshots,
"DesktopScreenshots",
base::FEATURE_DISABLED_BY_DEFAULT);
#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS)
void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kDesktopSharingHubEnabled, true);
}
#endif
} // namespace sharing_hub