Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1183)

Unified Diff: chrome/browser/extensions/api/app_window/app_window_api.cc

Issue 190533006: Add support for transparent background API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/app_window/app_window_api.cc
diff --git a/chrome/browser/extensions/api/app_window/app_window_api.cc b/chrome/browser/extensions/api/app_window/app_window_api.cc
index fac1edb00e306ea3d971b4287b9b182da4cd5459..dc7da13d2300e3f7c293a0857482c1cf2201be32 100644
--- a/chrome/browser/extensions/api/app_window/app_window_api.cc
+++ b/chrome/browser/extensions/api/app_window/app_window_api.cc
@@ -26,6 +26,7 @@
#include "content/public/common/url_constants.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/image_util.h"
+#include "extensions/common/features/simple_feature.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/switches.h"
#include "third_party/skia/include/core/SkColor.h"
@@ -54,6 +55,10 @@ const char kAlwaysOnTopPermission[] =
"The \"app.window.alwaysOnTop\" permission is required.";
const char kInvalidUrlParameter[] =
"The URL used for window creation must be local for security reasons.";
+const char kAlphaEnabledWrongChannel[] =
+ "The alphaEnabled option requires dev channel or newer.";
+const char kAlphaEnabledMissingPermission[] =
+ "The alphaEnabled option requires app.window.alpha permission.";
} // namespace app_window_constants
const char kNoneFrameOption[] = "none";
@@ -234,12 +239,34 @@ bool AppWindowCreateFunction::RunAsync() {
if (!GetFrameOptions(*options, &create_params))
return false;
- if (options->transparent_background.get() &&
- (extension()->permissions_data()->HasAPIPermission(
- APIPermission::kExperimental) ||
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableExperimentalExtensionApis))) {
- create_params.transparent_background = *options->transparent_background;
+ if (options->alpha_enabled.get()) {
+ const char* whitelist[] = {
+ "0F42756099D914A026DADFA182871C015735DD95", // http://crbug.com/323773
+ "2D22CDB6583FD0A13758AEBE8B15E45208B4E9A7",
+ "E7E2461CE072DF036CF9592740196159E2D7C089", // http://crbug.com/356200
+ "A74A4D44C7CFCD8844830E6140C8D763E12DD8F3",
+ "312745D9BF916161191143F6490085EEA0434997",
+ "53041A2FA309EECED01FFC751E7399186E860B2C"
+ };
+ if (GetCurrentChannel() > chrome::VersionInfo::CHANNEL_DEV &&
+ !extensions::SimpleFeature::IsIdInList(
+ extension_id(),
+ std::set<std::string>(whitelist,
+ whitelist + arraysize(whitelist)))) {
+ error_ = app_window_constants::kAlphaEnabledWrongChannel;
+ return false;
+ }
+ if (!extension()->permissions_data()->HasAPIPermission(
+ APIPermission::kAlphaEnabled)) {
+ error_ = app_window_constants::kAlphaEnabledMissingPermission;
+ return false;
+ }
+#if defined(USE_AURA)
+ create_params.alpha_enabled = *options->alpha_enabled;
+#else
+ // Transparency is only supported on Aura.
+ // Fallback to creating an opaque window (by ignoring alphaEnabled).
+#endif
}
if (options->hidden.get())
« no previous file with comments | « apps/ui/views/native_app_window_views.cc ('k') | chrome/browser/extensions/api/app_window/app_window_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698