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

Unified Diff: chrome/browser/extensions/api/tabs/tabs_api.cc

Issue 23377002: Clean up windows API implementations to use JSON compiler generated code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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
« no previous file with comments | « chrome/browser/extensions/api/tabs/tabs_api.h ('k') | chrome/browser/extensions/api/tabs/tabs_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/tabs/tabs_api.cc
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index d6e22c660d37fade646c0b996262ab2197118cff..c2bd9f6d62da6cc89c89387ceb3c2398893d6220 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -110,10 +110,7 @@ using content::WebContents;
namespace extensions {
-namespace Get = api::windows::Get;
-namespace GetAll = api::windows::GetAll;
-namespace GetCurrent = api::windows::GetCurrent;
-namespace GetLastFocused = api::windows::GetLastFocused;
+namespace windows = api::windows;
namespace errors = extension_manifest_errors;
namespace keys = tabs_constants;
namespace tabs = api::tabs;
@@ -227,7 +224,7 @@ Browser* CreateBrowserWindow(const Browser::CreateParams& params,
// Windows ---------------------------------------------------------------------
bool WindowsGetFunction::RunImpl() {
- scoped_ptr<Get::Params> params(Get::Params::Create(*args_));
+ scoped_ptr<windows::Get::Params> params(windows::Get::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
bool populate_tabs = false;
@@ -249,7 +246,8 @@ bool WindowsGetFunction::RunImpl() {
}
bool WindowsGetCurrentFunction::RunImpl() {
- scoped_ptr<GetCurrent::Params> params(GetCurrent::Params::Create(*args_));
+ scoped_ptr<windows::GetCurrent::Params> params(
+ windows::GetCurrent::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
bool populate_tabs = false;
@@ -270,8 +268,8 @@ bool WindowsGetCurrentFunction::RunImpl() {
}
bool WindowsGetLastFocusedFunction::RunImpl() {
- scoped_ptr<GetLastFocused::Params> params(
- GetLastFocused::Params::Create(*args_));
+ scoped_ptr<windows::GetLastFocused::Params> params(
+ windows::GetLastFocused::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
bool populate_tabs = false;
@@ -297,7 +295,8 @@ bool WindowsGetLastFocusedFunction::RunImpl() {
}
bool WindowsGetAllFunction::RunImpl() {
- scoped_ptr<GetAll::Params> params(GetAll::Params::Create(*args_));
+ scoped_ptr<windows::GetAll::Params> params(
+ windows::GetAll::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
bool populate_tabs = false;
@@ -322,16 +321,14 @@ bool WindowsGetAllFunction::RunImpl() {
}
bool WindowsCreateFunction::ShouldOpenIncognitoWindow(
- const base::DictionaryValue* args,
- std::vector<GURL>* urls,
- bool* is_error) {
+ const windows::Create::Params::CreateData* create_data,
+ std::vector<GURL>* urls, bool* is_error) {
*is_error = false;
const IncognitoModePrefs::Availability incognito_availability =
IncognitoModePrefs::GetAvailability(profile_->GetPrefs());
bool incognito = false;
- if (args && args->HasKey(keys::kIncognitoKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetBoolean(keys::kIncognitoKey,
- &incognito));
+ if (create_data && create_data->incognito) {
+ incognito = *create_data->incognito;
if (incognito && incognito_availability == IncognitoModePrefs::DISABLED) {
error_ = keys::kIncognitoModeIsDisabled;
*is_error = true;
@@ -372,69 +369,49 @@ bool WindowsCreateFunction::ShouldOpenIncognitoWindow(
}
bool WindowsCreateFunction::RunImpl() {
- base::DictionaryValue* args = NULL;
+ scoped_ptr<windows::Create::Params> params(
+ windows::Create::Params::Create(*args_));
+ EXTENSION_FUNCTION_VALIDATE(params);
std::vector<GURL> urls;
TabStripModel* source_tab_strip = NULL;
int tab_index = -1;
- if (HasOptionalArgument(0))
- EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &args));
+ windows::Create::Params::CreateData* create_data = params->create_data.get();
// Look for optional url.
- if (args) {
- if (args->HasKey(keys::kUrlKey)) {
- Value* url_value;
- std::vector<std::string> url_strings;
- args->Get(keys::kUrlKey, &url_value);
-
- // First, get all the URLs the client wants to open.
- if (url_value->IsType(Value::TYPE_STRING)) {
- std::string url_string;
- url_value->GetAsString(&url_string);
- url_strings.push_back(url_string);
- } else if (url_value->IsType(Value::TYPE_LIST)) {
- const base::ListValue* url_list =
- static_cast<const base::ListValue*>(url_value);
- for (size_t i = 0; i < url_list->GetSize(); ++i) {
- std::string url_string;
- EXTENSION_FUNCTION_VALIDATE(url_list->GetString(i, &url_string));
- url_strings.push_back(url_string);
- }
+ if (create_data && create_data->url) {
+ std::vector<std::string> url_strings;
+ // First, get all the URLs the client wants to open.
+ if (create_data->url->as_string)
+ url_strings.push_back(*create_data->url->as_string);
+ else if (create_data->url->as_strings)
+ url_strings.swap(*create_data->url->as_strings);
+
+ // Second, resolve, validate and convert them to GURLs.
+ for (std::vector<std::string>::iterator i = url_strings.begin();
+ i != url_strings.end(); ++i) {
+ GURL url = ExtensionTabUtil::ResolvePossiblyRelativeURL(
+ *i, GetExtension());
+ if (!url.is_valid()) {
+ error_ = ErrorUtils::FormatErrorMessage(keys::kInvalidUrlError, *i);
+ return false;
}
-
- // Second, resolve, validate and convert them to GURLs.
- for (std::vector<std::string>::iterator i = url_strings.begin();
- i != url_strings.end(); ++i) {
- GURL url = ExtensionTabUtil::ResolvePossiblyRelativeURL(
- *i, GetExtension());
- if (!url.is_valid()) {
- error_ = ErrorUtils::FormatErrorMessage(
- keys::kInvalidUrlError, *i);
- return false;
- }
- // Don't let the extension crash the browser or renderers.
- if (ExtensionTabUtil::IsCrashURL(url)) {
- error_ = keys::kNoCrashBrowserError;
- return false;
- }
- urls.push_back(url);
+ // Don't let the extension crash the browser or renderers.
+ if (ExtensionTabUtil::IsCrashURL(url)) {
+ error_ = keys::kNoCrashBrowserError;
+ return false;
}
+ urls.push_back(url);
}
}
// Look for optional tab id.
- if (args) {
- int tab_id = -1;
- if (args->HasKey(keys::kTabIdKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kTabIdKey, &tab_id));
-
- // Find the tab. |source_tab_strip| and |tab_index| will later be used to
- // move the tab into the created window.
- if (!GetTabById(tab_id, profile(), include_incognito(),
- NULL, &source_tab_strip,
- NULL, &tab_index, &error_))
- return false;
- }
+ if (create_data && create_data->tab_id) {
+ // Find the tab. |source_tab_strip| and |tab_index| will later be used to
+ // move the tab into the created window.
+ if (!GetTabById(*create_data->tab_id, profile(), include_incognito(), NULL,
+ &source_tab_strip, NULL, &tab_index, &error_))
+ return false;
}
Profile* window_profile = profile();
@@ -451,7 +428,7 @@ bool WindowsCreateFunction::RunImpl() {
// Decide whether we are opening a normal window or an incognito window.
bool is_error = true;
- bool open_incognito_window = ShouldOpenIncognitoWindow(args, &urls,
+ bool open_incognito_window = ShouldOpenIncognitoWindow(create_data, &urls,
&is_error);
if (is_error) {
// error_ member variable is set inside of ShouldOpenIncognitoWindow.
@@ -461,18 +438,16 @@ bool WindowsCreateFunction::RunImpl() {
window_profile = window_profile->GetOffTheRecordProfile();
}
- if (args) {
+ if (create_data) {
// Figure out window type before figuring out bounds so that default
// bounds can be set according to the window type.
- std::string type_str;
- if (args->HasKey(keys::kWindowTypeKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetString(keys::kWindowTypeKey,
- &type_str));
- if (type_str == keys::kWindowTypeValuePopup) {
+ switch (create_data->type) {
+ case windows::Create::Params::CreateData::TYPE_POPUP:
window_type = Browser::TYPE_POPUP;
extension_id = GetExtension()->id();
- } else if (type_str == keys::kWindowTypeValuePanel ||
- type_str == keys::kWindowTypeValueDetachedPanel) {
+ break;
+ case windows::Create::Params::CreateData::TYPE_PANEL:
+ case windows::Create::Params::CreateData::TYPE_DETACHED_PANEL: {
extension_id = GetExtension()->id();
bool use_panels = false;
#if !defined(OS_ANDROID)
@@ -482,16 +457,22 @@ bool WindowsCreateFunction::RunImpl() {
create_panel = true;
#if !defined(OS_CHROMEOS)
// Non-ChromeOS has both docked and detached panel types.
- if (type_str == keys::kWindowTypeValueDetachedPanel)
+ if (create_data->type ==
+ windows::Create::Params::CreateData::TYPE_DETACHED_PANEL) {
panel_create_mode = PanelManager::CREATE_AS_DETACHED;
+ }
#endif
} else {
window_type = Browser::TYPE_POPUP;
}
- } else if (type_str != keys::kWindowTypeValueNormal) {
+ break;
+ }
+ case windows::Create::Params::CreateData::TYPE_NONE:
+ case windows::Create::Params::CreateData::TYPE_NORMAL:
+ break;
+ default:
error_ = keys::kInvalidWindowTypeError;
return false;
- }
}
// Initialize default window bounds according to window type.
@@ -519,34 +500,20 @@ bool WindowsCreateFunction::RunImpl() {
}
// Any part of the bounds can optionally be set by the caller.
- int bounds_val = -1;
- if (args->HasKey(keys::kLeftKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kLeftKey,
- &bounds_val));
- window_bounds.set_x(bounds_val);
- }
+ if (create_data->left)
+ window_bounds.set_x(*create_data->left);
- if (args->HasKey(keys::kTopKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kTopKey,
- &bounds_val));
- window_bounds.set_y(bounds_val);
- }
+ if (create_data->top)
+ window_bounds.set_y(*create_data->top);
- if (args->HasKey(keys::kWidthKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kWidthKey,
- &bounds_val));
- window_bounds.set_width(bounds_val);
- }
+ if (create_data->width)
+ window_bounds.set_width(*create_data->width);
- if (args->HasKey(keys::kHeightKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kHeightKey,
- &bounds_val));
- window_bounds.set_height(bounds_val);
- }
+ if (create_data->height)
+ window_bounds.set_height(*create_data->height);
- if (args->HasKey(keys::kFocusedKey)) {
- EXTENSION_FUNCTION_VALIDATE(args->GetBoolean(keys::kFocusedKey,
- &focused));
+ if (create_data->focused) {
+ focused = *create_data->focused;
saw_focus_key = true;
}
}
@@ -662,13 +629,13 @@ bool WindowsCreateFunction::RunImpl() {
}
bool WindowsUpdateFunction::RunImpl() {
- int window_id = extension_misc::kUnknownWindowId;
- EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &window_id));
- base::DictionaryValue* update_props;
- EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &update_props));
+ scoped_ptr<windows::Update::Params> params(
+ windows::Update::Params::Create(*args_));
+ EXTENSION_FUNCTION_VALIDATE(params);
WindowController* controller;
- if (!windows_util::GetWindowFromWindowID(this, window_id, &controller))
+ if (!windows_util::GetWindowFromWindowID(this, params->window_id,
+ &controller))
return false;
#if defined(OS_WIN)
@@ -680,22 +647,24 @@ bool WindowsUpdateFunction::RunImpl() {
#endif
ui::WindowShowState show_state = ui::SHOW_STATE_DEFAULT; // No change.
- std::string state_str;
- if (update_props->HasKey(keys::kShowStateKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetString(keys::kShowStateKey,
- &state_str));
- if (state_str == keys::kShowStateValueNormal) {
+ switch (params->update_info.state) {
+ case windows::Update::Params::UpdateInfo::STATE_NORMAL:
show_state = ui::SHOW_STATE_NORMAL;
- } else if (state_str == keys::kShowStateValueMinimized) {
+ break;
+ case windows::Update::Params::UpdateInfo::STATE_MINIMIZED:
show_state = ui::SHOW_STATE_MINIMIZED;
- } else if (state_str == keys::kShowStateValueMaximized) {
+ break;
+ case windows::Update::Params::UpdateInfo::STATE_MAXIMIZED:
show_state = ui::SHOW_STATE_MAXIMIZED;
- } else if (state_str == keys::kShowStateValueFullscreen) {
+ break;
+ case windows::Update::Params::UpdateInfo::STATE_FULLSCREEN:
show_state = ui::SHOW_STATE_FULLSCREEN;
- } else {
+ break;
+ case windows::Update::Params::UpdateInfo::STATE_NONE:
+ break;
+ default:
error_ = keys::kInvalidWindowStateError;
return false;
- }
}
if (show_state != ui::SHOW_STATE_FULLSCREEN &&
@@ -730,36 +699,23 @@ bool WindowsUpdateFunction::RunImpl() {
bool set_bounds = false;
// Any part of the bounds can optionally be set by the caller.
- int bounds_val;
- if (update_props->HasKey(keys::kLeftKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(
- keys::kLeftKey,
- &bounds_val));
- bounds.set_x(bounds_val);
+ if (params->update_info.left) {
+ bounds.set_x(*params->update_info.left);
set_bounds = true;
}
- if (update_props->HasKey(keys::kTopKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(
- keys::kTopKey,
- &bounds_val));
- bounds.set_y(bounds_val);
+ if (params->update_info.top) {
+ bounds.set_y(*params->update_info.top);
set_bounds = true;
}
- if (update_props->HasKey(keys::kWidthKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(
- keys::kWidthKey,
- &bounds_val));
- bounds.set_width(bounds_val);
+ if (params->update_info.width) {
+ bounds.set_width(*params->update_info.width);
set_bounds = true;
}
- if (update_props->HasKey(keys::kHeightKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetInteger(
- keys::kHeightKey,
- &bounds_val));
- bounds.set_height(bounds_val);
+ if (params->update_info.height) {
+ bounds.set_height(*params->update_info.height);
set_bounds = true;
}
@@ -775,11 +731,8 @@ bool WindowsUpdateFunction::RunImpl() {
controller->window()->SetBounds(bounds);
}
- bool active_val = false;
- if (update_props->HasKey(keys::kFocusedKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetBoolean(
- keys::kFocusedKey, &active_val));
- if (active_val) {
+ if (params->update_info.focused) {
+ if (*params->update_info.focused) {
if (show_state == ui::SHOW_STATE_MINIMIZED) {
error_ = keys::kInvalidWindowStateError;
return false;
@@ -795,12 +748,8 @@ bool WindowsUpdateFunction::RunImpl() {
}
}
- bool draw_attention = false;
- if (update_props->HasKey(keys::kDrawAttentionKey)) {
- EXTENSION_FUNCTION_VALIDATE(update_props->GetBoolean(
- keys::kDrawAttentionKey, &draw_attention));
- controller->window()->FlashFrame(draw_attention);
- }
+ if (params->update_info.draw_attention)
+ controller->window()->FlashFrame(*params->update_info.draw_attention);
SetResult(controller->CreateWindowValue());
@@ -808,11 +757,13 @@ bool WindowsUpdateFunction::RunImpl() {
}
bool WindowsRemoveFunction::RunImpl() {
- int window_id = -1;
- EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &window_id));
+ scoped_ptr<windows::Remove::Params> params(
+ windows::Remove::Params::Create(*args_));
+ EXTENSION_FUNCTION_VALIDATE(params);
WindowController* controller;
- if (!windows_util::GetWindowFromWindowID(this, window_id, &controller))
+ if (!windows_util::GetWindowFromWindowID(this, params->window_id,
+ &controller))
return false;
#if defined(OS_WIN)
« no previous file with comments | « chrome/browser/extensions/api/tabs/tabs_api.h ('k') | chrome/browser/extensions/api/tabs/tabs_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698