blob: 10852a861c8a5b9c678880585103c9ffb57ffa53 [file] [log] [blame]
// Copyright 2016 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.
#ifndef CHROME_BROWSER_PLUGINS_PLUGIN_UTILS_H_
#define CHROME_BROWSER_PLUGINS_PLUGIN_UTILS_H_
#include "base/macros.h"
#include "components/content_settings/core/common/content_settings.h"
class GURL;
class HostContentSettingsMap;
namespace content {
class ResourceContext;
struct WebPluginInfo;
}
namespace url {
class Origin;
}
class PluginUtils {
public:
// |is_default| and |is_managed| may be nullptr. In that case, they aren't
// set.
static void GetPluginContentSetting(
const HostContentSettingsMap* host_content_settings_map,
const content::WebPluginInfo& plugin,
const url::Origin& main_frame_origin,
const GURL& plugin_url,
const std::string& resource,
ContentSetting* setting,
bool* is_default,
bool* is_managed);
// Returns the content setting for Flash. This is the same as
// |GetPluginContentSetting| but flash-specific.
static ContentSetting GetFlashPluginContentSetting(
const HostContentSettingsMap* host_content_settings_map,
const url::Origin& main_frame_origin,
const GURL& plugin_url,
bool* is_managed);
// Remember that the user has changed the Flash permission for
// |top_level_url|.
static void RememberFlashChangedForSite(
HostContentSettingsMap* host_content_settings_map,
const GURL& top_level_url);
// Returns true if HTML content should be prefered, by hiding Flash from the
// plugin list. Use this instead of
// base::FeatureList::IsEnabled(features::kPreferHtmlOverPlugins).
static bool ShouldPreferHtmlOverPlugins(
const HostContentSettingsMap* host_content_settings_map);
// If there's an extension that is allowed to handle |mime_type|, returns its
// ID. Otherwise returns an empty string.
static std::string GetExtensionIdForMimeType(
content::ResourceContext* resource_context,
const std::string& mime_type);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(PluginUtils);
};
#endif // CHROME_BROWSER_PLUGINS_PLUGIN_UTILS_H_