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

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

Issue 1413543005: Use FrameTreeNode ID as frameId in extension APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Improve port lifetime management, add tests Created 5 years, 1 month 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
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 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 replacements.ClearRef(); 481 replacements.ClearRef();
482 return existing_url.ReplaceComponents(replacements) == 482 return existing_url.ReplaceComponents(replacements) ==
483 url.ReplaceComponents(replacements); 483 url.ReplaceComponents(replacements);
484 } 484 }
485 485
486 bool WebNavigationGetFrameFunction::RunSync() { 486 bool WebNavigationGetFrameFunction::RunSync() {
487 scoped_ptr<GetFrame::Params> params(GetFrame::Params::Create(*args_)); 487 scoped_ptr<GetFrame::Params> params(GetFrame::Params::Create(*args_));
488 EXTENSION_FUNCTION_VALIDATE(params.get()); 488 EXTENSION_FUNCTION_VALIDATE(params.get());
489 int tab_id = params->details.tab_id; 489 int tab_id = params->details.tab_id;
490 int frame_id = params->details.frame_id; 490 int frame_id = params->details.frame_id;
491 int process_id = params->details.process_id;
492 491
493 SetResult(base::Value::CreateNullValue()); 492 SetResult(base::Value::CreateNullValue());
494 493
495 content::WebContents* web_contents; 494 content::WebContents* web_contents;
496 if (!ExtensionTabUtil::GetTabById(tab_id, 495 if (!ExtensionTabUtil::GetTabById(tab_id,
497 GetProfile(), 496 GetProfile(),
498 include_incognito(), 497 include_incognito(),
499 NULL, 498 NULL,
500 NULL, 499 NULL,
501 &web_contents, 500 &web_contents,
502 NULL) || 501 NULL) ||
503 !web_contents) { 502 !web_contents) {
504 return true; 503 return true;
505 } 504 }
506 505
507 WebNavigationTabObserver* observer = 506 WebNavigationTabObserver* observer =
508 WebNavigationTabObserver::Get(web_contents); 507 WebNavigationTabObserver::Get(web_contents);
509 DCHECK(observer); 508 DCHECK(observer);
510 509
511 const FrameNavigationState& frame_navigation_state = 510 const FrameNavigationState& frame_navigation_state =
512 observer->frame_navigation_state(); 511 observer->frame_navigation_state();
513 512
514 content::RenderFrameHost* render_frame_host = 513 content::RenderFrameHost* render_frame_host =
515 frame_id == 0 ? web_contents->GetMainFrame() 514 frame_id == 0 ? web_contents->GetMainFrame()
516 : content::RenderFrameHost::FromID(process_id, frame_id); 515 : content::RenderFrameHost::FromFrameTreeNodeID(frame_id);
517 if (!frame_navigation_state.IsValidFrame(render_frame_host)) 516 if (!frame_navigation_state.IsValidFrame(render_frame_host))
518 return true; 517 return true;
519 518
520 GURL frame_url = frame_navigation_state.GetUrl(render_frame_host); 519 GURL frame_url = frame_navigation_state.GetUrl(render_frame_host);
521 if (!frame_navigation_state.IsValidUrl(frame_url)) 520 if (!frame_navigation_state.IsValidUrl(frame_url))
522 return true; 521 return true;
523 522
524 GetFrame::Results::Details frame_details; 523 GetFrame::Results::Details frame_details;
525 frame_details.url = frame_url.spec(); 524 frame_details.url = frame_url.spec();
526 frame_details.error_occurred = 525 frame_details.error_occurred =
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 return g_factory.Pointer(); 612 return g_factory.Pointer();
614 } 613 }
615 614
616 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { 615 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) {
617 web_navigation_event_router_.reset(new WebNavigationEventRouter( 616 web_navigation_event_router_.reset(new WebNavigationEventRouter(
618 Profile::FromBrowserContext(browser_context_))); 617 Profile::FromBrowserContext(browser_context_)));
619 EventRouter::Get(browser_context_)->UnregisterObserver(this); 618 EventRouter::Get(browser_context_)->UnregisterObserver(this);
620 } 619 }
621 620
622 } // namespace extensions 621 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698