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

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: s/:/ / Created 4 years, 11 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
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"
11 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api_consta nts.h" 11 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api_consta nts.h"
12 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api_helper s.h" 12 #include "chrome/browser/extensions/api/web_navigation/web_navigation_api_helper s.h"
13 #include "chrome/browser/extensions/extension_tab_util.h" 13 #include "chrome/browser/extensions/extension_tab_util.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/tab_contents/retargeting_details.h" 15 #include "chrome/browser/tab_contents/retargeting_details.h"
16 #include "chrome/browser/ui/browser.h" 16 #include "chrome/browser/ui/browser.h"
17 #include "chrome/browser/ui/browser_iterator.h" 17 #include "chrome/browser/ui/browser_iterator.h"
18 #include "chrome/browser/ui/browser_list.h" 18 #include "chrome/browser/ui/browser_list.h"
19 #include "chrome/common/extensions/api/web_navigation.h" 19 #include "chrome/common/extensions/api/web_navigation.h"
20 #include "content/public/browser/navigation_details.h" 20 #include "content/public/browser/navigation_details.h"
21 #include "content/public/browser/notification_service.h" 21 #include "content/public/browser/notification_service.h"
22 #include "content/public/browser/notification_types.h" 22 #include "content/public/browser/notification_types.h"
23 #include "content/public/browser/render_frame_host.h" 23 #include "content/public/browser/render_frame_host.h"
24 #include "content/public/browser/render_process_host.h" 24 #include "content/public/browser/render_process_host.h"
25 #include "content/public/browser/resource_request_details.h" 25 #include "content/public/browser/resource_request_details.h"
26 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
27 #include "content/public/common/url_constants.h" 27 #include "content/public/common/url_constants.h"
28 #include "extensions/browser/event_router.h" 28 #include "extensions/browser/event_router.h"
29 #include "extensions/browser/extension_api_frame_id_map.h"
29 #include "extensions/browser/view_type_utils.h" 30 #include "extensions/browser/view_type_utils.h"
30 #include "net/base/net_errors.h" 31 #include "net/base/net_errors.h"
31 32
32 using content::ResourceType; 33 using content::ResourceType;
33 34
34 namespace GetFrame = extensions::api::web_navigation::GetFrame; 35 namespace GetFrame = extensions::api::web_navigation::GetFrame;
35 namespace GetAllFrames = extensions::api::web_navigation::GetAllFrames; 36 namespace GetAllFrames = extensions::api::web_navigation::GetAllFrames;
36 37
37 DEFINE_WEB_CONTENTS_USER_DATA_KEY(extensions::WebNavigationTabObserver); 38 DEFINE_WEB_CONTENTS_USER_DATA_KEY(extensions::WebNavigationTabObserver);
38 39
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 replacements.ClearRef(); 486 replacements.ClearRef();
486 return existing_url.ReplaceComponents(replacements) == 487 return existing_url.ReplaceComponents(replacements) ==
487 url.ReplaceComponents(replacements); 488 url.ReplaceComponents(replacements);
488 } 489 }
489 490
490 bool WebNavigationGetFrameFunction::RunSync() { 491 bool WebNavigationGetFrameFunction::RunSync() {
491 scoped_ptr<GetFrame::Params> params(GetFrame::Params::Create(*args_)); 492 scoped_ptr<GetFrame::Params> params(GetFrame::Params::Create(*args_));
492 EXTENSION_FUNCTION_VALIDATE(params.get()); 493 EXTENSION_FUNCTION_VALIDATE(params.get());
493 int tab_id = params->details.tab_id; 494 int tab_id = params->details.tab_id;
494 int frame_id = params->details.frame_id; 495 int frame_id = params->details.frame_id;
495 int process_id = params->details.process_id;
496 496
497 SetResult(base::Value::CreateNullValue()); 497 SetResult(base::Value::CreateNullValue());
498 498
499 content::WebContents* web_contents; 499 content::WebContents* web_contents;
500 if (!ExtensionTabUtil::GetTabById(tab_id, 500 if (!ExtensionTabUtil::GetTabById(tab_id,
501 GetProfile(), 501 GetProfile(),
502 include_incognito(), 502 include_incognito(),
503 NULL, 503 NULL,
504 NULL, 504 NULL,
505 &web_contents, 505 &web_contents,
506 NULL) || 506 NULL) ||
507 !web_contents) { 507 !web_contents) {
508 return true; 508 return true;
509 } 509 }
510 510
511 WebNavigationTabObserver* observer = 511 WebNavigationTabObserver* observer =
512 WebNavigationTabObserver::Get(web_contents); 512 WebNavigationTabObserver::Get(web_contents);
513 DCHECK(observer); 513 DCHECK(observer);
514 514
515 const FrameNavigationState& frame_navigation_state = 515 const FrameNavigationState& frame_navigation_state =
516 observer->frame_navigation_state(); 516 observer->frame_navigation_state();
517 517
518 content::RenderFrameHost* render_frame_host = 518 content::RenderFrameHost* render_frame_host =
519 frame_id == 0 ? web_contents->GetMainFrame() 519 ExtensionApiFrameIdMap::Get()->GetRenderFrameHostById(web_contents,
520 : content::RenderFrameHost::FromID(process_id, frame_id); 520 frame_id);
521 if (!frame_navigation_state.IsValidFrame(render_frame_host)) 521 if (!frame_navigation_state.IsValidFrame(render_frame_host))
522 return true; 522 return true;
523 523
524 GURL frame_url = frame_navigation_state.GetUrl(render_frame_host); 524 GURL frame_url = frame_navigation_state.GetUrl(render_frame_host);
525 if (!frame_navigation_state.IsValidUrl(frame_url)) 525 if (!frame_navigation_state.IsValidUrl(frame_url))
526 return true; 526 return true;
527 527
528 GetFrame::Results::Details frame_details; 528 GetFrame::Results::Details frame_details;
529 frame_details.url = frame_url.spec(); 529 frame_details.url = frame_url.spec();
530 frame_details.error_occurred = 530 frame_details.error_occurred =
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 return g_factory.Pointer(); 617 return g_factory.Pointer();
618 } 618 }
619 619
620 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { 620 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) {
621 web_navigation_event_router_.reset(new WebNavigationEventRouter( 621 web_navigation_event_router_.reset(new WebNavigationEventRouter(
622 Profile::FromBrowserContext(browser_context_))); 622 Profile::FromBrowserContext(browser_context_)));
623 EventRouter::Get(browser_context_)->UnregisterObserver(this); 623 EventRouter::Get(browser_context_)->UnregisterObserver(this);
624 } 624 }
625 625
626 } // namespace extensions 626 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698