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

Side by Side Diff: chrome/browser/extensions/api/web_navigation/web_navigation_api.cc

Issue 2399423004: [Extensions] Convert some ChromeSyncExtensionFunctions (Closed)
Patch Set: Created 4 years, 2 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 | « chrome/browser/extensions/api/web_navigation/web_navigation_api.h ('k') | no next file » | 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 // Implements the Chrome Extensions WebNavigation API. 5 // Implements the Chrome Extensions WebNavigation API.
6 6
7 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h" 7 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 GURL existing_url = navigation_state_.GetUrl(render_frame_host); 439 GURL existing_url = navigation_state_.GetUrl(render_frame_host);
440 if (existing_url == url) 440 if (existing_url == url)
441 return false; 441 return false;
442 442
443 url::Replacements<char> replacements; 443 url::Replacements<char> replacements;
444 replacements.ClearRef(); 444 replacements.ClearRef();
445 return existing_url.ReplaceComponents(replacements) == 445 return existing_url.ReplaceComponents(replacements) ==
446 url.ReplaceComponents(replacements); 446 url.ReplaceComponents(replacements);
447 } 447 }
448 448
449 bool WebNavigationGetFrameFunction::RunSync() { 449 ExtensionFunction::ResponseAction WebNavigationGetFrameFunction::Run() {
450 std::unique_ptr<GetFrame::Params> params(GetFrame::Params::Create(*args_)); 450 std::unique_ptr<GetFrame::Params> params(GetFrame::Params::Create(*args_));
451 EXTENSION_FUNCTION_VALIDATE(params.get()); 451 EXTENSION_FUNCTION_VALIDATE(params.get());
452 int tab_id = params->details.tab_id; 452 int tab_id = params->details.tab_id;
453 int frame_id = params->details.frame_id; 453 int frame_id = params->details.frame_id;
454 454
455 SetResult(base::Value::CreateNullValue());
456
457 content::WebContents* web_contents; 455 content::WebContents* web_contents;
458 if (!ExtensionTabUtil::GetTabById(tab_id, 456 if (!ExtensionTabUtil::GetTabById(tab_id, browser_context(),
459 GetProfile(), 457 include_incognito(), nullptr, nullptr,
460 include_incognito(), 458 &web_contents, nullptr) ||
461 NULL,
462 NULL,
463 &web_contents,
464 NULL) ||
465 !web_contents) { 459 !web_contents) {
466 return true; 460 return RespondNow(OneArgument(base::Value::CreateNullValue()));
467 } 461 }
468 462
469 WebNavigationTabObserver* observer = 463 WebNavigationTabObserver* observer =
470 WebNavigationTabObserver::Get(web_contents); 464 WebNavigationTabObserver::Get(web_contents);
471 DCHECK(observer); 465 DCHECK(observer);
472 466
473 const FrameNavigationState& frame_navigation_state = 467 const FrameNavigationState& frame_navigation_state =
474 observer->frame_navigation_state(); 468 observer->frame_navigation_state();
475 469
476 content::RenderFrameHost* render_frame_host = 470 content::RenderFrameHost* render_frame_host =
477 ExtensionApiFrameIdMap::Get()->GetRenderFrameHostById(web_contents, 471 ExtensionApiFrameIdMap::Get()->GetRenderFrameHostById(web_contents,
478 frame_id); 472 frame_id);
479 if (!frame_navigation_state.IsValidFrame(render_frame_host)) 473 if (!frame_navigation_state.IsValidFrame(render_frame_host))
480 return true; 474 return RespondNow(OneArgument(base::Value::CreateNullValue()));
481 475
482 GURL frame_url = frame_navigation_state.GetUrl(render_frame_host); 476 GURL frame_url = frame_navigation_state.GetUrl(render_frame_host);
483 if (!frame_navigation_state.IsValidUrl(frame_url)) 477 if (!frame_navigation_state.IsValidUrl(frame_url))
484 return true; 478 return RespondNow(OneArgument(base::Value::CreateNullValue()));
485 479
486 GetFrame::Results::Details frame_details; 480 GetFrame::Results::Details frame_details;
487 frame_details.url = frame_url.spec(); 481 frame_details.url = frame_url.spec();
488 frame_details.error_occurred = 482 frame_details.error_occurred =
489 frame_navigation_state.GetErrorOccurredInFrame(render_frame_host); 483 frame_navigation_state.GetErrorOccurredInFrame(render_frame_host);
490 frame_details.parent_frame_id = 484 frame_details.parent_frame_id =
491 ExtensionApiFrameIdMap::GetFrameId(render_frame_host->GetParent()); 485 ExtensionApiFrameIdMap::GetFrameId(render_frame_host->GetParent());
492 results_ = GetFrame::Results::Create(frame_details); 486 return RespondNow(ArgumentList(GetFrame::Results::Create(frame_details)));
493 return true;
494 } 487 }
495 488
496 bool WebNavigationGetAllFramesFunction::RunSync() { 489 ExtensionFunction::ResponseAction WebNavigationGetAllFramesFunction::Run() {
497 std::unique_ptr<GetAllFrames::Params> params( 490 std::unique_ptr<GetAllFrames::Params> params(
498 GetAllFrames::Params::Create(*args_)); 491 GetAllFrames::Params::Create(*args_));
499 EXTENSION_FUNCTION_VALIDATE(params.get()); 492 EXTENSION_FUNCTION_VALIDATE(params.get());
500 int tab_id = params->details.tab_id; 493 int tab_id = params->details.tab_id;
501 494
502 SetResult(base::Value::CreateNullValue());
503
504 content::WebContents* web_contents; 495 content::WebContents* web_contents;
505 if (!ExtensionTabUtil::GetTabById(tab_id, 496 if (!ExtensionTabUtil::GetTabById(tab_id, browser_context(),
506 GetProfile(), 497 include_incognito(), nullptr, nullptr,
507 include_incognito(), 498 &web_contents, nullptr) ||
508 NULL,
509 NULL,
510 &web_contents,
511 NULL) ||
512 !web_contents) { 499 !web_contents) {
513 return true; 500 return RespondNow(OneArgument(base::Value::CreateNullValue()));
514 } 501 }
515 502
516 WebNavigationTabObserver* observer = 503 WebNavigationTabObserver* observer =
517 WebNavigationTabObserver::Get(web_contents); 504 WebNavigationTabObserver::Get(web_contents);
518 DCHECK(observer); 505 DCHECK(observer);
519 506
520 const FrameNavigationState& navigation_state = 507 const FrameNavigationState& navigation_state =
521 observer->frame_navigation_state(); 508 observer->frame_navigation_state();
522 509
523 std::vector<GetAllFrames::Results::DetailsType> result_list; 510 std::vector<GetAllFrames::Results::DetailsType> result_list;
524 for (FrameNavigationState::const_iterator it = navigation_state.begin(); 511 for (FrameNavigationState::const_iterator it = navigation_state.begin();
525 it != navigation_state.end(); ++it) { 512 it != navigation_state.end(); ++it) {
526 GURL frame_url = navigation_state.GetUrl(*it); 513 GURL frame_url = navigation_state.GetUrl(*it);
527 if (!navigation_state.IsValidUrl(frame_url)) 514 if (!navigation_state.IsValidUrl(frame_url))
528 continue; 515 continue;
529 GetAllFrames::Results::DetailsType frame; 516 GetAllFrames::Results::DetailsType frame;
530 frame.url = frame_url.spec(); 517 frame.url = frame_url.spec();
531 frame.frame_id = ExtensionApiFrameIdMap::GetFrameId(*it); 518 frame.frame_id = ExtensionApiFrameIdMap::GetFrameId(*it);
532 frame.parent_frame_id = 519 frame.parent_frame_id =
533 ExtensionApiFrameIdMap::GetFrameId((*it)->GetParent()); 520 ExtensionApiFrameIdMap::GetFrameId((*it)->GetParent());
534 frame.process_id = (*it)->GetProcess()->GetID(); 521 frame.process_id = (*it)->GetProcess()->GetID();
535 frame.error_occurred = navigation_state.GetErrorOccurredInFrame(*it); 522 frame.error_occurred = navigation_state.GetErrorOccurredInFrame(*it);
536 result_list.push_back(std::move(frame)); 523 result_list.push_back(std::move(frame));
537 } 524 }
538 results_ = GetAllFrames::Results::Create(result_list); 525 return RespondNow(ArgumentList(GetAllFrames::Results::Create(result_list)));
539 return true;
540 } 526 }
541 527
542 WebNavigationAPI::WebNavigationAPI(content::BrowserContext* context) 528 WebNavigationAPI::WebNavigationAPI(content::BrowserContext* context)
543 : browser_context_(context) { 529 : browser_context_(context) {
544 EventRouter* event_router = EventRouter::Get(browser_context_); 530 EventRouter* event_router = EventRouter::Get(browser_context_);
545 event_router->RegisterObserver(this, 531 event_router->RegisterObserver(this,
546 web_navigation::OnBeforeNavigate::kEventName); 532 web_navigation::OnBeforeNavigate::kEventName);
547 event_router->RegisterObserver(this, web_navigation::OnCommitted::kEventName); 533 event_router->RegisterObserver(this, web_navigation::OnCommitted::kEventName);
548 event_router->RegisterObserver(this, web_navigation::OnCompleted::kEventName); 534 event_router->RegisterObserver(this, web_navigation::OnCompleted::kEventName);
549 event_router->RegisterObserver( 535 event_router->RegisterObserver(
(...skipping 26 matching lines...) Expand all
576 return g_factory.Pointer(); 562 return g_factory.Pointer();
577 } 563 }
578 564
579 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { 565 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) {
580 web_navigation_event_router_.reset(new WebNavigationEventRouter( 566 web_navigation_event_router_.reset(new WebNavigationEventRouter(
581 Profile::FromBrowserContext(browser_context_))); 567 Profile::FromBrowserContext(browser_context_)));
582 EventRouter::Get(browser_context_)->UnregisterObserver(this); 568 EventRouter::Get(browser_context_)->UnregisterObserver(this);
583 } 569 }
584 570
585 } // namespace extensions 571 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/web_navigation/web_navigation_api.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698