| Index: chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
|
| diff --git a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
|
| index 17342b6645927c8ab392abe015bd099380acb116..6f919d5048b1bfe4731d98f891fdcc5c2d1fd225 100644
|
| --- a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
|
| +++ b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
|
| @@ -30,6 +30,9 @@ void StartupPagesHandler::RegisterMessages() {
|
| web_ui()->RegisterMessageCallback("addStartupPage",
|
| base::Bind(&StartupPagesHandler::HandleAddStartupPage,
|
| base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback("editStartupPage",
|
| + base::Bind(&StartupPagesHandler::HandleEditStartupPage,
|
| + base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad",
|
| base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad,
|
| base::Unretained(this)));
|
| @@ -105,6 +108,34 @@ void StartupPagesHandler::HandleAddStartupPage(const base::ListValue* args) {
|
| ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true));
|
| }
|
|
|
| +void StartupPagesHandler::HandleEditStartupPage(const base::ListValue* args) {
|
| + CHECK_EQ(args->GetSize(), 3U);
|
| + const base::Value* callback_id;
|
| + CHECK(args->Get(0, &callback_id));
|
| + int index;
|
| + CHECK(args->GetInteger(1, &index));
|
| +
|
| + if (index < 0 || index > startup_custom_pages_table_model_.RowCount()) {
|
| + RejectJavascriptCallback(*callback_id, *base::Value::CreateNullValue());
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| +
|
| + std::string url_string;
|
| + CHECK(args->GetString(2, &url_string));
|
| +
|
| + GURL fixed_url;
|
| + if (settings_utils::FixupAndValidateStartupPage(url_string, &fixed_url)) {
|
| + std::vector<GURL> urls = startup_custom_pages_table_model_.GetURLs();
|
| + urls[index] = fixed_url;
|
| + startup_custom_pages_table_model_.SetURLs(urls);
|
| + SaveStartupPagesPref();
|
| + ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true));
|
| + } else {
|
| + ResolveJavascriptCallback(*callback_id, base::FundamentalValue(false));
|
| + }
|
| +}
|
| +
|
| void StartupPagesHandler::HandleOnStartupPrefsPageLoad(
|
| const base::ListValue* args) {
|
| startup_custom_pages_table_model_.SetObserver(this);
|
|
|