OLD | NEW |
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/automation/testing_automation_provider.h" | 5 #include "chrome/browser/automation/testing_automation_provider.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_DomOperation, | 402 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_DomOperation, |
403 ExecuteJavascript) | 403 ExecuteJavascript) |
404 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_OpenNewBrowserWindowOfType, | 404 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_OpenNewBrowserWindowOfType, |
405 OpenNewBrowserWindowOfType) | 405 OpenNewBrowserWindowOfType) |
406 IPC_MESSAGE_HANDLER(AutomationMsg_WindowForBrowser, GetWindowForBrowser) | 406 IPC_MESSAGE_HANDLER(AutomationMsg_WindowForBrowser, GetWindowForBrowser) |
407 IPC_MESSAGE_HANDLER(AutomationMsg_GetMetricEventDuration, | 407 IPC_MESSAGE_HANDLER(AutomationMsg_GetMetricEventDuration, |
408 GetMetricEventDuration) | 408 GetMetricEventDuration) |
409 IPC_MESSAGE_HANDLER(AutomationMsg_BringBrowserToFront, BringBrowserToFront) | 409 IPC_MESSAGE_HANDLER(AutomationMsg_BringBrowserToFront, BringBrowserToFront) |
410 IPC_MESSAGE_HANDLER(AutomationMsg_FindWindowVisibility, | 410 IPC_MESSAGE_HANDLER(AutomationMsg_FindWindowVisibility, |
411 GetFindWindowVisibility) | 411 GetFindWindowVisibility) |
412 IPC_MESSAGE_HANDLER(AutomationMsg_BookmarkBarVisibility, | |
413 GetBookmarkBarVisibility) | |
414 IPC_MESSAGE_HANDLER(AutomationMsg_GetBookmarksAsJSON, | |
415 GetBookmarksAsJSON) | |
416 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForBookmarkModelToLoad, | 412 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForBookmarkModelToLoad, |
417 WaitForBookmarkModelToLoad) | 413 WaitForBookmarkModelToLoad) |
418 IPC_MESSAGE_HANDLER(AutomationMsg_AddBookmarkGroup, | |
419 AddBookmarkGroup) | |
420 IPC_MESSAGE_HANDLER(AutomationMsg_AddBookmarkURL, | |
421 AddBookmarkURL) | |
422 IPC_MESSAGE_HANDLER(AutomationMsg_ReparentBookmark, | |
423 ReparentBookmark) | |
424 IPC_MESSAGE_HANDLER(AutomationMsg_SetBookmarkTitle, | |
425 SetBookmarkTitle) | |
426 IPC_MESSAGE_HANDLER(AutomationMsg_SetBookmarkURL, | |
427 SetBookmarkURL) | |
428 IPC_MESSAGE_HANDLER(AutomationMsg_RemoveBookmark, | |
429 RemoveBookmark) | |
430 IPC_MESSAGE_HANDLER_DELAY_REPLY( | 414 IPC_MESSAGE_HANDLER_DELAY_REPLY( |
431 AutomationMsg_WaitForBrowserWindowCountToBecome, | 415 AutomationMsg_WaitForBrowserWindowCountToBecome, |
432 WaitForBrowserWindowCountToBecome) | 416 WaitForBrowserWindowCountToBecome) |
433 IPC_MESSAGE_HANDLER_DELAY_REPLY( | 417 IPC_MESSAGE_HANDLER_DELAY_REPLY( |
434 AutomationMsg_GoBackBlockUntilNavigationsComplete, | 418 AutomationMsg_GoBackBlockUntilNavigationsComplete, |
435 GoBackBlockUntilNavigationsComplete) | 419 GoBackBlockUntilNavigationsComplete) |
436 IPC_MESSAGE_HANDLER_DELAY_REPLY( | 420 IPC_MESSAGE_HANDLER_DELAY_REPLY( |
437 AutomationMsg_GoForwardBlockUntilNavigationsComplete, | 421 AutomationMsg_GoForwardBlockUntilNavigationsComplete, |
438 GoForwardBlockUntilNavigationsComplete) | 422 GoForwardBlockUntilNavigationsComplete) |
439 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_SendJSONRequest, | 423 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_SendJSONRequest, |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 Browser* browser = browser_tracker_->GetResource(handle); | 1247 Browser* browser = browser_tracker_->GetResource(handle); |
1264 if (browser) { | 1248 if (browser) { |
1265 FindBarTesting* find_bar = | 1249 FindBarTesting* find_bar = |
1266 browser->GetFindBarController()->find_bar()->GetFindBarTesting(); | 1250 browser->GetFindBarController()->find_bar()->GetFindBarTesting(); |
1267 find_bar->GetFindBarWindowInfo(NULL, visible); | 1251 find_bar->GetFindBarWindowInfo(NULL, visible); |
1268 } | 1252 } |
1269 } | 1253 } |
1270 | 1254 |
1271 // Bookmark bar visibility is based on the pref (e.g. is it in the toolbar). | 1255 // Bookmark bar visibility is based on the pref (e.g. is it in the toolbar). |
1272 // Presence in the NTP is signalled in |detached|. | 1256 // Presence in the NTP is signalled in |detached|. |
1273 void TestingAutomationProvider::GetBookmarkBarVisibility(int handle, | 1257 void TestingAutomationProvider::GetBookmarkBarStatus( |
1274 bool* visible, | 1258 DictionaryValue* args, |
1275 bool* animating, | 1259 IPC::Message* reply_message) { |
1276 bool* detached) { | 1260 AutomationJSONReply reply(this, reply_message); |
1277 *visible = false; | 1261 Browser* browser; |
1278 *animating = false; | 1262 std::string error_msg; |
1279 | 1263 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
1280 if (browser_tracker_->ContainsHandle(handle)) { | 1264 reply.SendError(error_msg); |
1281 Browser* browser = browser_tracker_->GetResource(handle); | 1265 return; |
1282 if (browser) { | |
1283 // browser->window()->IsBookmarkBarVisible() is not consistent across | |
1284 // platforms. bookmark_bar_state() also follows prefs::kShowBookmarkBar | |
1285 // and has a shared implementation on all platforms. | |
1286 *visible = browser->bookmark_bar_state() == BookmarkBar::SHOW; | |
1287 *animating = browser->window()->IsBookmarkBarAnimating(); | |
1288 *detached = browser->bookmark_bar_state() == BookmarkBar::DETACHED; | |
1289 } | |
1290 } | 1266 } |
| 1267 // browser->window()->IsBookmarkBarVisible() is not consistent across |
| 1268 // platforms. bookmark_bar_state() also follows prefs::kShowBookmarkBar |
| 1269 // and has a shared implementation on all platforms. |
| 1270 DictionaryValue dict; |
| 1271 dict.SetBoolean("visible", |
| 1272 browser->bookmark_bar_state() == BookmarkBar::SHOW); |
| 1273 dict.SetBoolean("animating", browser->window()->IsBookmarkBarAnimating()); |
| 1274 dict.SetBoolean("detached", |
| 1275 browser->bookmark_bar_state() == BookmarkBar::DETACHED); |
| 1276 reply.SendSuccess(&dict); |
1291 } | 1277 } |
1292 | 1278 |
1293 void TestingAutomationProvider::GetBookmarksAsJSON( | 1279 void TestingAutomationProvider::GetBookmarksAsJSON( |
1294 int handle, | 1280 DictionaryValue* args, |
1295 std::string* bookmarks_as_json, | 1281 IPC::Message* reply_message) { |
1296 bool* success) { | 1282 AutomationJSONReply reply(this, reply_message); |
1297 *success = false; | 1283 Browser* browser; |
1298 if (browser_tracker_->ContainsHandle(handle)) { | 1284 std::string error_msg, bookmarks_as_json; |
1299 Browser* browser = browser_tracker_->GetResource(handle); | 1285 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
1300 if (browser) { | 1286 reply.SendError(error_msg); |
1301 BookmarkModel* bookmark_model = | 1287 return; |
1302 BookmarkModelFactory::GetForProfile(browser->profile()); | |
1303 if (!bookmark_model->IsLoaded()) { | |
1304 return; | |
1305 } | |
1306 scoped_refptr<BookmarkStorage> storage(new BookmarkStorage( | |
1307 browser->profile(), bookmark_model)); | |
1308 *success = storage->SerializeData(bookmarks_as_json); | |
1309 } | |
1310 } | 1288 } |
| 1289 BookmarkModel* bookmark_model = |
| 1290 BookmarkModelFactory::GetForProfile(browser->profile()); |
| 1291 if (!bookmark_model->IsLoaded()) { |
| 1292 reply.SendError("Bookmark model is not loaded"); |
| 1293 return; |
| 1294 } |
| 1295 scoped_refptr<BookmarkStorage> storage( |
| 1296 new BookmarkStorage(browser->profile(), bookmark_model)); |
| 1297 if (!storage->SerializeData(&bookmarks_as_json)) { |
| 1298 reply.SendError("Failed to serialize bookmarks"); |
| 1299 return; |
| 1300 } |
| 1301 DictionaryValue dict; |
| 1302 dict.SetString("bookmarks_as_json", bookmarks_as_json); |
| 1303 reply.SendSuccess(&dict); |
1311 } | 1304 } |
1312 | 1305 |
1313 void TestingAutomationProvider::WaitForBookmarkModelToLoad( | 1306 void TestingAutomationProvider::WaitForBookmarkModelToLoad( |
1314 int handle, | 1307 int handle, |
1315 IPC::Message* reply_message) { | 1308 IPC::Message* reply_message) { |
1316 if (browser_tracker_->ContainsHandle(handle)) { | 1309 if (browser_tracker_->ContainsHandle(handle)) { |
1317 Browser* browser = browser_tracker_->GetResource(handle); | 1310 Browser* browser = browser_tracker_->GetResource(handle); |
1318 BookmarkModel* model = | 1311 BookmarkModel* model = |
1319 BookmarkModelFactory::GetForProfile(browser->profile()); | 1312 BookmarkModelFactory::GetForProfile(browser->profile()); |
| 1313 AutomationProviderBookmarkModelObserver* observer = |
| 1314 new AutomationProviderBookmarkModelObserver(this, reply_message, |
| 1315 model, false); |
1320 if (model->IsLoaded()) { | 1316 if (model->IsLoaded()) { |
| 1317 observer->ReleaseReply(); |
| 1318 delete observer; |
1321 AutomationMsg_WaitForBookmarkModelToLoad::WriteReplyParams( | 1319 AutomationMsg_WaitForBookmarkModelToLoad::WriteReplyParams( |
1322 reply_message, true); | 1320 reply_message, true); |
1323 Send(reply_message); | 1321 Send(reply_message); |
1324 } else { | |
1325 // The observer will delete itself when done. | |
1326 new AutomationProviderBookmarkModelObserver(this, reply_message, | |
1327 model); | |
1328 } | 1322 } |
1329 } | 1323 } |
1330 } | 1324 } |
1331 | 1325 |
1332 void TestingAutomationProvider::AddBookmarkGroup(int handle, | 1326 void TestingAutomationProvider::WaitForBookmarkModelToLoadJSON( |
1333 int64 parent_id, | 1327 DictionaryValue* args, |
1334 int index, | 1328 IPC::Message* reply_message) { |
1335 std::wstring title, | 1329 Browser* browser; |
1336 bool* success) { | 1330 std::string error_msg, bookmarks_as_json; |
1337 if (browser_tracker_->ContainsHandle(handle)) { | 1331 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
1338 Browser* browser = browser_tracker_->GetResource(handle); | 1332 AutomationJSONReply(this, reply_message).SendError(error_msg); |
1339 if (browser) { | 1333 return; |
1340 BookmarkModel* model = | 1334 } |
1341 BookmarkModelFactory::GetForProfile(browser->profile()); | 1335 BookmarkModel* model = |
1342 if (!model->IsLoaded()) { | 1336 BookmarkModelFactory::GetForProfile(browser->profile()); |
1343 *success = false; | 1337 AutomationProviderBookmarkModelObserver* observer = |
1344 return; | 1338 new AutomationProviderBookmarkModelObserver(this, reply_message, model, |
1345 } | 1339 true); |
1346 const BookmarkNode* parent = model->GetNodeByID(parent_id); | 1340 if (model->IsLoaded()) { |
1347 DCHECK(parent); | 1341 observer->ReleaseReply(); |
1348 if (parent) { | 1342 delete observer; |
1349 const BookmarkNode* child = model->AddFolder(parent, index, | 1343 AutomationJSONReply(this, reply_message).SendSuccess(NULL); |
1350 WideToUTF16Hack(title)); | 1344 return; |
1351 DCHECK(child); | 1345 } |
1352 if (child) | 1346 } |
1353 *success = true; | 1347 |
1354 } | 1348 void TestingAutomationProvider::AddBookmark( |
1355 } | 1349 DictionaryValue* args, |
1356 } | 1350 IPC::Message* reply_message) { |
1357 *success = false; | 1351 AutomationJSONReply reply(this, reply_message); |
1358 } | 1352 Browser* browser; |
1359 | 1353 std::string error_msg, url; |
1360 void TestingAutomationProvider::AddBookmarkURL(int handle, | 1354 string16 title; |
1361 int64 parent_id, | 1355 int parent_id, index; |
1362 int index, | 1356 bool folder; |
1363 std::wstring title, | 1357 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
1364 const GURL& url, | 1358 reply.SendError(error_msg); |
1365 bool* success) { | 1359 return; |
1366 if (browser_tracker_->ContainsHandle(handle)) { | 1360 } |
1367 Browser* browser = browser_tracker_->GetResource(handle); | 1361 if (!args->GetBoolean("is_folder", &folder)) { |
1368 if (browser) { | 1362 reply.SendError("'is_folder' missing or invalid"); |
1369 BookmarkModel* model = | 1363 return; |
1370 BookmarkModelFactory::GetForProfile(browser->profile()); | 1364 } |
1371 if (!model->IsLoaded()) { | 1365 if (!folder && !args->GetString("url", &url)) { |
1372 *success = false; | 1366 reply.SendError("'url' missing or invalid"); |
1373 return; | 1367 return; |
1374 } | 1368 } |
1375 const BookmarkNode* parent = model->GetNodeByID(parent_id); | 1369 if (!args->GetInteger("parent_id", &parent_id)) { |
1376 DCHECK(parent); | 1370 reply.SendError("'parent_id' missing or invalid"); |
1377 if (parent) { | 1371 return; |
1378 const BookmarkNode* child = model->AddURL(parent, index, | 1372 } |
1379 WideToUTF16Hack(title), url); | 1373 if (!args->GetInteger("index", &index)) { |
1380 DCHECK(child); | 1374 reply.SendError("'index' missing or invalid"); |
1381 if (child) | 1375 return; |
1382 *success = true; | 1376 } |
1383 } | 1377 if (!args->GetString("title", &title)) { |
1384 } | 1378 reply.SendError("'title' missing or invalid"); |
1385 } | 1379 return; |
1386 *success = false; | 1380 } |
1387 } | 1381 BookmarkModel* model = |
1388 | 1382 BookmarkModelFactory::GetForProfile(browser->profile()); |
1389 void TestingAutomationProvider::ReparentBookmark(int handle, | 1383 if (!model->IsLoaded()) { |
1390 int64 id, | 1384 reply.SendError("Bookmark model is not loaded"); |
1391 int64 new_parent_id, | 1385 return; |
1392 int index, | 1386 } |
1393 bool* success) { | 1387 const BookmarkNode* parent = model->GetNodeByID(parent_id); |
1394 if (browser_tracker_->ContainsHandle(handle)) { | 1388 if (!parent) { |
1395 Browser* browser = browser_tracker_->GetResource(handle); | 1389 reply.SendError("Failed to get parent bookmark node"); |
1396 if (browser) { | 1390 return; |
1397 BookmarkModel* model = | 1391 } |
1398 BookmarkModelFactory::GetForProfile(browser->profile()); | 1392 const BookmarkNode* child; |
1399 if (!model->IsLoaded()) { | 1393 if (folder) { |
1400 *success = false; | 1394 child = model->AddFolder(parent, index, title); |
1401 return; | 1395 } else { |
1402 } | 1396 child = model->AddURL(parent, index, title, GURL(url)); |
1403 const BookmarkNode* node = model->GetNodeByID(id); | 1397 } |
1404 DCHECK(node); | 1398 if (!child) { |
1405 const BookmarkNode* new_parent = model->GetNodeByID(new_parent_id); | 1399 reply.SendError("Failed to add bookmark"); |
1406 DCHECK(new_parent); | 1400 return; |
1407 if (node && new_parent) { | 1401 } |
1408 model->Move(node, new_parent, index); | 1402 reply.SendSuccess(NULL); |
1409 *success = true; | 1403 } |
1410 } | 1404 |
1411 } | 1405 void TestingAutomationProvider::ReparentBookmark(DictionaryValue* args, |
1412 } | 1406 IPC::Message* reply_message) { |
1413 *success = false; | 1407 AutomationJSONReply reply(this, reply_message); |
1414 } | 1408 Browser* browser; |
1415 | 1409 std::string error_msg; |
1416 void TestingAutomationProvider::SetBookmarkTitle(int handle, | 1410 int new_parent_id, id, index; |
1417 int64 id, | 1411 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
1418 std::wstring title, | 1412 reply.SendError(error_msg); |
1419 bool* success) { | 1413 return; |
1420 if (browser_tracker_->ContainsHandle(handle)) { | 1414 } |
1421 Browser* browser = browser_tracker_->GetResource(handle); | 1415 if (!args->GetInteger("id", &id)) { |
1422 if (browser) { | 1416 reply.SendError("'id' missing or invalid"); |
1423 BookmarkModel* model = | 1417 return; |
1424 BookmarkModelFactory::GetForProfile(browser->profile()); | 1418 } |
1425 if (!model->IsLoaded()) { | 1419 if (!args->GetInteger("new_parent_id", &new_parent_id)) { |
1426 *success = false; | 1420 reply.SendError("'new_parent_id' missing or invalid"); |
1427 return; | 1421 return; |
1428 } | 1422 } |
1429 const BookmarkNode* node = model->GetNodeByID(id); | 1423 if (!args->GetInteger("index", &index)) { |
1430 DCHECK(node); | 1424 reply.SendError("'index' missing or invalid"); |
1431 if (node) { | 1425 return; |
1432 model->SetTitle(node, WideToUTF16Hack(title)); | 1426 } |
1433 *success = true; | 1427 BookmarkModel* model = |
1434 } | 1428 BookmarkModelFactory::GetForProfile(browser->profile()); |
1435 } | 1429 if (!model->IsLoaded()) { |
1436 } | 1430 reply.SendError("Bookmark model is not loaded"); |
1437 *success = false; | 1431 return; |
1438 } | 1432 } |
1439 | 1433 const BookmarkNode* node = model->GetNodeByID(id); |
1440 void TestingAutomationProvider::SetBookmarkURL(int handle, | 1434 const BookmarkNode* new_parent = model->GetNodeByID(new_parent_id); |
1441 int64 id, | 1435 if (!node) { |
1442 const GURL& url, | 1436 reply.SendError("Failed to get bookmark node"); |
1443 bool* success) { | 1437 return; |
1444 if (browser_tracker_->ContainsHandle(handle)) { | 1438 } |
1445 Browser* browser = browser_tracker_->GetResource(handle); | 1439 if (!new_parent) { |
1446 if (browser) { | 1440 reply.SendError("Failed to get new parent bookmark node"); |
1447 BookmarkModel* model = | 1441 return; |
1448 BookmarkModelFactory::GetForProfile(browser->profile()); | 1442 } |
1449 if (!model->IsLoaded()) { | 1443 model->Move(node, new_parent, index); |
1450 *success = false; | 1444 reply.SendSuccess(NULL); |
1451 return; | 1445 } |
1452 } | 1446 |
1453 const BookmarkNode* node = model->GetNodeByID(id); | 1447 void TestingAutomationProvider::SetBookmarkTitle(DictionaryValue* args, |
1454 DCHECK(node); | 1448 IPC::Message* reply_message) { |
1455 if (node) { | 1449 AutomationJSONReply reply(this, reply_message); |
1456 model->SetURL(node, url); | 1450 Browser* browser; |
1457 *success = true; | 1451 std::string error_msg; |
1458 } | 1452 string16 title; |
1459 } | 1453 int id; |
1460 } | 1454 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
1461 *success = false; | 1455 reply.SendError(error_msg); |
1462 } | 1456 return; |
1463 | 1457 } |
1464 void TestingAutomationProvider::RemoveBookmark(int handle, | 1458 if (!args->GetInteger("id", &id)) { |
1465 int64 id, | 1459 reply.SendError("'id' missing or invalid"); |
1466 bool* success) { | 1460 return; |
1467 if (browser_tracker_->ContainsHandle(handle)) { | 1461 } |
1468 Browser* browser = browser_tracker_->GetResource(handle); | 1462 if (!args->GetString("title", &title)) { |
1469 if (browser) { | 1463 reply.SendError("'title' missing or invalid"); |
1470 BookmarkModel* model = | 1464 return; |
1471 BookmarkModelFactory::GetForProfile(browser->profile()); | 1465 } |
1472 if (!model->IsLoaded()) { | 1466 BookmarkModel* model = |
1473 *success = false; | 1467 BookmarkModelFactory::GetForProfile(browser->profile()); |
1474 return; | 1468 if (!model->IsLoaded()) { |
1475 } | 1469 reply.SendError("Bookmark model is not loaded"); |
1476 const BookmarkNode* node = model->GetNodeByID(id); | 1470 return; |
1477 DCHECK(node); | 1471 } |
1478 if (node) { | 1472 const BookmarkNode* node = model->GetNodeByID(id); |
1479 const BookmarkNode* parent = node->parent(); | 1473 if (!node) { |
1480 DCHECK(parent); | 1474 reply.SendError("Failed to get bookmark node"); |
1481 model->Remove(parent, parent->GetIndexOf(node)); | 1475 return; |
1482 *success = true; | 1476 } |
1483 } | 1477 model->SetTitle(node, title); |
1484 } | 1478 reply.SendSuccess(NULL); |
1485 } | 1479 } |
1486 *success = false; | 1480 |
| 1481 void TestingAutomationProvider::SetBookmarkURL(DictionaryValue* args, |
| 1482 IPC::Message* reply_message) { |
| 1483 AutomationJSONReply reply(this, reply_message); |
| 1484 Browser* browser; |
| 1485 std::string error_msg, url; |
| 1486 int id; |
| 1487 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
| 1488 reply.SendError(error_msg); |
| 1489 return; |
| 1490 } |
| 1491 if (!args->GetInteger("id", &id)) { |
| 1492 reply.SendError("'id' missing or invalid"); |
| 1493 return; |
| 1494 } |
| 1495 if (!args->GetString("url", &url)) { |
| 1496 reply.SendError("'url' missing or invalid"); |
| 1497 return; |
| 1498 } |
| 1499 BookmarkModel* model = |
| 1500 BookmarkModelFactory::GetForProfile(browser->profile()); |
| 1501 if (!model->IsLoaded()) { |
| 1502 reply.SendError("Bookmark model is not loaded"); |
| 1503 return; |
| 1504 } |
| 1505 const BookmarkNode* node = model->GetNodeByID(id); |
| 1506 if (!node) { |
| 1507 reply.SendError("Failed to get bookmark node"); |
| 1508 return; |
| 1509 } |
| 1510 model->SetURL(node, GURL(url)); |
| 1511 reply.SendSuccess(NULL); |
| 1512 } |
| 1513 |
| 1514 void TestingAutomationProvider::RemoveBookmark(DictionaryValue* args, |
| 1515 IPC::Message* reply_message) { |
| 1516 AutomationJSONReply reply(this, reply_message); |
| 1517 Browser* browser; |
| 1518 std::string error_msg; |
| 1519 int id; |
| 1520 if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) { |
| 1521 reply.SendError(error_msg); |
| 1522 return; |
| 1523 } |
| 1524 if (!args->GetInteger("id", &id)) { |
| 1525 reply.SendError("'id' missing or invalid"); |
| 1526 return; |
| 1527 } |
| 1528 BookmarkModel* model = |
| 1529 BookmarkModelFactory::GetForProfile(browser->profile()); |
| 1530 if (!model->IsLoaded()) { |
| 1531 reply.SendError("Bookmark model is not loaded"); |
| 1532 return; |
| 1533 } |
| 1534 const BookmarkNode* node = model->GetNodeByID(id); |
| 1535 if (!node) { |
| 1536 reply.SendError("Failed to get bookmark node"); |
| 1537 return; |
| 1538 } |
| 1539 const BookmarkNode* parent = node->parent(); |
| 1540 if (!parent) { |
| 1541 reply.SendError("Failed to get parent bookmark node"); |
| 1542 return; |
| 1543 } |
| 1544 model->Remove(parent, parent->GetIndexOf(node)); |
| 1545 reply.SendSuccess(NULL); |
1487 } | 1546 } |
1488 | 1547 |
1489 void TestingAutomationProvider::WaitForBrowserWindowCountToBecome( | 1548 void TestingAutomationProvider::WaitForBrowserWindowCountToBecome( |
1490 int target_count, | 1549 int target_count, |
1491 IPC::Message* reply_message) { | 1550 IPC::Message* reply_message) { |
1492 if (static_cast<int>(BrowserList::size()) == target_count) { | 1551 if (static_cast<int>(BrowserList::size()) == target_count) { |
1493 AutomationMsg_WaitForBrowserWindowCountToBecome::WriteReplyParams( | 1552 AutomationMsg_WaitForBrowserWindowCountToBecome::WriteReplyParams( |
1494 reply_message, true); | 1553 reply_message, true); |
1495 Send(reply_message); | 1554 Send(reply_message); |
1496 return; | 1555 return; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1605 handler_map_["DeleteCookie"] = | 1664 handler_map_["DeleteCookie"] = |
1606 &TestingAutomationProvider::DeleteCookieJSON; | 1665 &TestingAutomationProvider::DeleteCookieJSON; |
1607 handler_map_["SetCookie"] = | 1666 handler_map_["SetCookie"] = |
1608 &TestingAutomationProvider::SetCookieJSON; | 1667 &TestingAutomationProvider::SetCookieJSON; |
1609 handler_map_["GetCookiesInBrowserContext"] = | 1668 handler_map_["GetCookiesInBrowserContext"] = |
1610 &TestingAutomationProvider::GetCookiesInBrowserContext; | 1669 &TestingAutomationProvider::GetCookiesInBrowserContext; |
1611 handler_map_["DeleteCookieInBrowserContext"] = | 1670 handler_map_["DeleteCookieInBrowserContext"] = |
1612 &TestingAutomationProvider::DeleteCookieInBrowserContext; | 1671 &TestingAutomationProvider::DeleteCookieInBrowserContext; |
1613 handler_map_["SetCookieInBrowserContext"] = | 1672 handler_map_["SetCookieInBrowserContext"] = |
1614 &TestingAutomationProvider::SetCookieInBrowserContext; | 1673 &TestingAutomationProvider::SetCookieInBrowserContext; |
| 1674 |
| 1675 handler_map_["WaitForBookmarkModelToLoad"] = |
| 1676 &TestingAutomationProvider::WaitForBookmarkModelToLoadJSON; |
| 1677 handler_map_["GetBookmarksAsJSON"] = |
| 1678 &TestingAutomationProvider::GetBookmarksAsJSON; |
| 1679 handler_map_["GetBookmarkBarStatus"] = |
| 1680 &TestingAutomationProvider::GetBookmarkBarStatus; |
| 1681 handler_map_["AddBookmark"] = |
| 1682 &TestingAutomationProvider::AddBookmark; |
| 1683 handler_map_["ReparentBookmark"] = |
| 1684 &TestingAutomationProvider::ReparentBookmark; |
| 1685 handler_map_["SetBookmarkTitle"] = |
| 1686 &TestingAutomationProvider::SetBookmarkTitle; |
| 1687 handler_map_["SetBookmarkURL"] = |
| 1688 &TestingAutomationProvider::SetBookmarkURL; |
| 1689 handler_map_["RemoveBookmark"] = |
| 1690 &TestingAutomationProvider::RemoveBookmark; |
| 1691 |
1615 handler_map_["GetTabIds"] = | 1692 handler_map_["GetTabIds"] = |
1616 &TestingAutomationProvider::GetTabIds; | 1693 &TestingAutomationProvider::GetTabIds; |
1617 handler_map_["GetViews"] = | 1694 handler_map_["GetViews"] = |
1618 &TestingAutomationProvider::GetViews; | 1695 &TestingAutomationProvider::GetViews; |
1619 handler_map_["IsTabIdValid"] = | 1696 handler_map_["IsTabIdValid"] = |
1620 &TestingAutomationProvider::IsTabIdValid; | 1697 &TestingAutomationProvider::IsTabIdValid; |
1621 handler_map_["DoesAutomationObjectExist"] = | 1698 handler_map_["DoesAutomationObjectExist"] = |
1622 &TestingAutomationProvider::DoesAutomationObjectExist; | 1699 &TestingAutomationProvider::DoesAutomationObjectExist; |
1623 handler_map_["CloseTab"] = | 1700 handler_map_["CloseTab"] = |
1624 &TestingAutomationProvider::CloseTabJSON; | 1701 &TestingAutomationProvider::CloseTabJSON; |
(...skipping 5540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7165 void TestingAutomationProvider::OnRemoveProvider() { | 7242 void TestingAutomationProvider::OnRemoveProvider() { |
7166 if (g_browser_process) | 7243 if (g_browser_process) |
7167 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); | 7244 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); |
7168 } | 7245 } |
7169 | 7246 |
7170 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, | 7247 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, |
7171 WebContents* tab) { | 7248 WebContents* tab) { |
7172 if (chrome::GetActiveWebContents(browser) != tab) | 7249 if (chrome::GetActiveWebContents(browser) != tab) |
7173 chrome::ActivateTabAt(browser, chrome::GetIndexOfTab(browser, tab), true); | 7250 chrome::ActivateTabAt(browser, chrome::GetIndexOfTab(browser, tab), true); |
7174 } | 7251 } |
OLD | NEW |