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

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

Issue 503383002: Allow component IME extension use app.window and add 'ime' window type for app window (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more tests Created 6 years, 3 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 9b591a71f558bba21bcae2da008b0a17826940b4..6e5c0e1d928f02835cbb2bd258d0c9be81c60483 100644
--- a/chrome/browser/extensions/api/app_window/app_window_api.cc
+++ b/chrome/browser/extensions/api/app_window/app_window_api.cc
@@ -56,6 +56,14 @@ const char kAlphaEnabledMissingPermission[] =
"The alphaEnabled option requires app.window.alpha permission.";
const char kAlphaEnabledNeedsFrameNone[] =
"The alphaEnabled option can only be used with \"frame: 'none'\".";
+const char kImeWindowMissingPermission[] =
+ "The ime option requires app.window.ime permission.";
+const char kImeWindowNeedsFrameNone[] =
+ "The ime option can only be used with \"frame: 'none'\".";
+#if !defined(OS_CHROMEOS)
+const char kImeWindowUnsupportedPlatform[] =
+ "The ime option can only be used on ChromeOS.";
+#endif
} // namespace app_window_constants
const char kNoneFrameOption[] = "none";
@@ -203,6 +211,25 @@ bool AppWindowCreateFunction::RunAsync() {
if (!GetFrameOptions(*options, &create_params))
return false;
+ if (options->ime.get()) {
benwells 2014/09/11 19:35:10 It is important that non-app extensions MUST speci
bshe 2014/09/11 22:35:59 I see what you mean. I thought whitelist is enough
+#if defined(OS_CHROMEOS)
+ if (!extension()->permissions_data()->HasAPIPermission(
+ APIPermission::kImeWindowEnabled)) {
+ error_ = app_window_constants::kImeWindowMissingPermission;
+ return false;
+ }
+ if (create_params.frame != AppWindow::FRAME_NONE) {
+ error_ = app_window_constants::kImeWindowNeedsFrameNone;
+ return false;
+ }
+ create_params.is_ime_window = *options->ime;
+#else
+ // IME window is only supported on ChromeOS.
+ error_ = app_window_constants::kImeWindowUnsupportedPlatform;
+ return false;
+#endif
+ }
+
if (options->alpha_enabled.get()) {
const char* whitelist[] = {
"0F42756099D914A026DADFA182871C015735DD95", // http://crbug.com/323773

Powered by Google App Engine
This is Rietveld 408576698