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

Side by Side Diff: chrome/browser/extensions/api/tabs/tabs_api.cc

Issue 1055933009: Validate windows.create API's state input parameter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use switch and tweak test Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/api/tabs/tabs_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/tabs/tabs_api.h" 5 #include "chrome/browser/extensions/api/tabs/tabs_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 return ui::SHOW_STATE_MAXIMIZED; 191 return ui::SHOW_STATE_MAXIMIZED;
192 case windows::WINDOW_STATE_FULLSCREEN: 192 case windows::WINDOW_STATE_FULLSCREEN:
193 return ui::SHOW_STATE_FULLSCREEN; 193 return ui::SHOW_STATE_FULLSCREEN;
194 case windows::WINDOW_STATE_NONE: 194 case windows::WINDOW_STATE_NONE:
195 return ui::SHOW_STATE_DEFAULT; 195 return ui::SHOW_STATE_DEFAULT;
196 } 196 }
197 NOTREACHED(); 197 NOTREACHED();
198 return ui::SHOW_STATE_DEFAULT; 198 return ui::SHOW_STATE_DEFAULT;
199 } 199 }
200 200
201 bool IsValidStateForWindowsCreateFunction(
202 const windows::Create::Params::CreateData* create_data) {
203 if (!create_data)
204 return true;
205
206 bool focused = create_data->focused && *create_data->focused;
207 bool has_bound = create_data->left || create_data->top ||
208 create_data->width || create_data->height;
209 bool is_panel =
210 create_data->type == windows::CreateType::CREATE_TYPE_PANEL ||
211 create_data->type == windows::CreateType::CREATE_TYPE_DETACHED_PANEL;
212
213 switch (create_data->state) {
214 case windows::WINDOW_STATE_MINIMIZED:
215 return !focused && !has_bound && !is_panel;
216 case windows::WINDOW_STATE_MAXIMIZED:
217 case windows::WINDOW_STATE_FULLSCREEN:
218 // If 'focused' is not set, then treat it as focused true.
not at google - send to devlin 2015/04/22 17:46:32 So is focused default true, or default false? or d
limasdf 2015/04/23 14:45:32 It depends on initial state. if |focused| is (!cr
not at google - send to devlin 2015/04/23 20:58:52 ah :) in that case having a |focused| variable is
limasdf 2015/04/23 23:51:41 Done.
219 return (create_data->focused ? focused : true) && !has_bound && !is_panel;
220 case windows::WINDOW_STATE_NORMAL:
221 case windows::WINDOW_STATE_NONE:
222 return true;
223 }
224 NOTREACHED();
225 return true;
226 }
227
201 } // namespace 228 } // namespace
202 229
203 void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode, 230 void ZoomModeToZoomSettings(ZoomController::ZoomMode zoom_mode,
204 api::tabs::ZoomSettings* zoom_settings) { 231 api::tabs::ZoomSettings* zoom_settings) {
205 DCHECK(zoom_settings); 232 DCHECK(zoom_settings);
206 switch (zoom_mode) { 233 switch (zoom_mode) {
207 case ZoomController::ZOOM_MODE_DEFAULT: 234 case ZoomController::ZOOM_MODE_DEFAULT:
208 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_AUTOMATIC; 235 zoom_settings->mode = api::tabs::ZOOM_SETTINGS_MODE_AUTOMATIC;
209 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN; 236 zoom_settings->scope = api::tabs::ZOOM_SETTINGS_SCOPE_PER_ORIGIN;
210 break; 237 break;
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 GetProfile(), 441 GetProfile(),
415 include_incognito(), 442 include_incognito(),
416 NULL, 443 NULL,
417 &source_tab_strip, 444 &source_tab_strip,
418 NULL, 445 NULL,
419 &tab_index, 446 &tab_index,
420 &error_)) 447 &error_))
421 return false; 448 return false;
422 } 449 }
423 450
451 if (!IsValidStateForWindowsCreateFunction(create_data)) {
452 error_ = keys::kInvalidWindowStateError;
453 return false;
454 }
455
424 Profile* window_profile = GetProfile(); 456 Profile* window_profile = GetProfile();
425 Browser::Type window_type = Browser::TYPE_TABBED; 457 Browser::Type window_type = Browser::TYPE_TABBED;
426 bool create_panel = false; 458 bool create_panel = false;
427 459
428 // panel_create_mode only applies if create_panel = true 460 // panel_create_mode only applies if create_panel = true
429 PanelManager::CreateMode panel_create_mode = PanelManager::CREATE_AS_DOCKED; 461 PanelManager::CreateMode panel_create_mode = PanelManager::CREATE_AS_DOCKED;
430 462
431 gfx::Rect window_bounds; 463 gfx::Rect window_bounds;
432 bool focused = true; 464 bool focused = true;
433 bool saw_focus_key = false; 465 bool saw_focus_key = false;
(...skipping 1537 matching lines...) Expand 10 before | Expand all | Expand 10 after
1971 ZoomModeToZoomSettings(zoom_mode, &zoom_settings); 2003 ZoomModeToZoomSettings(zoom_mode, &zoom_settings);
1972 zoom_settings.default_zoom_factor.reset(new double( 2004 zoom_settings.default_zoom_factor.reset(new double(
1973 content::ZoomLevelToZoomFactor(zoom_controller->GetDefaultZoomLevel()))); 2005 content::ZoomLevelToZoomFactor(zoom_controller->GetDefaultZoomLevel())));
1974 2006
1975 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings); 2007 results_ = api::tabs::GetZoomSettings::Results::Create(zoom_settings);
1976 SendResponse(true); 2008 SendResponse(true);
1977 return true; 2009 return true;
1978 } 2010 }
1979 2011
1980 } // namespace extensions 2012 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/api/tabs/tabs_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698