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

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

Issue 10871086: First part of remembering platform app window geometry. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: return error instead of truncating id Created 8 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 4bebe7e0415ef1db19c2c5d376af015ffb6d230c..319aa95bd3c6d58944ef0cd917596e4920881b2c 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,8 @@ namespace app_window_constants {
const char kNoAssociatedShellWindow[] =
"The context from which the function was called did not have an "
"associated shell window.";
+const char kInvalidWindowId[] =
+ "The window id can not be more than 256 characters long.";
};
bool AppWindowExtensionFunction::RunImpl() {
@@ -58,14 +60,42 @@ bool AppWindowCreateFunction::RunImpl() {
ShellWindow::CreateParams create_params;
app_window::CreateWindowOptions* options = params->options.get();
if (options) {
- if (options->width.get())
- create_params.bounds.set_width(*options->width.get());
- if (options->height.get())
- create_params.bounds.set_height(*options->height.get());
- if (options->left.get())
- create_params.bounds.set_x(*options->left.get());
- if (options->top.get())
- create_params.bounds.set_y(*options->top.get());
+ if (options->id.get()) {
+ // TODO(mek): use URL if no id specified?
+ // Limit length of id to 256 characters.
+ if (options->id->length() > 256) {
+ error_ = app_window_constants::kInvalidWindowId;
+ return false;
+ }
+
+ create_params.window_key = *options->id;
+ }
+
+ if (options->default_width.get())
+ create_params.bounds.set_width(*options->default_width.get());
+ if (options->default_height.get())
+ create_params.bounds.set_height(*options->default_height.get());
+ if (options->default_left.get())
+ create_params.bounds.set_x(*options->default_left.get());
+ if (options->default_top.get())
+ create_params.bounds.set_y(*options->default_top.get());
+
+
+ if (options->width.get() || options->height.get()) {
+ if (options->width.get())
+ create_params.bounds.set_width(*options->width.get());
+ if (options->height.get())
+ create_params.bounds.set_height(*options->height.get());
+ create_params.restoreSize = false;
+ }
+
+ if (options->left.get() || options->top.get()) {
+ if (options->left.get())
+ create_params.bounds.set_x(*options->left.get());
+ if (options->top.get())
+ create_params.bounds.set_y(*options->top.get());
+ create_params.restorePosition = false;
+ }
if (options->frame.get()) {
create_params.frame = *options->frame == kNoneFrameOption ?
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_system.h » ('j') | chrome/browser/ui/extensions/shell_window.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698