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 // 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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 | 366 |
367 if (!navigation_state_.CanSendEvents(frame_id)) | 367 if (!navigation_state_.CanSendEvents(frame_id)) |
368 return; | 368 return; |
369 | 369 |
370 helpers::DispatchOnBeforeNavigate( | 370 helpers::DispatchOnBeforeNavigate( |
371 web_contents(), | 371 web_contents(), |
372 render_view_host->GetProcess()->GetID(), | 372 render_view_host->GetProcess()->GetID(), |
373 frame_id.frame_num, | 373 frame_id.frame_num, |
374 is_main_frame, | 374 is_main_frame, |
375 parent_frame_id.frame_num, | 375 parent_frame_id.frame_num, |
376 navigation_state_.IsMainFrame(parent_frame_id), | 376 is_main_frame ? false : navigation_state_.IsMainFrame(parent_frame_id), |
377 navigation_state_.GetUrl(frame_id)); | 377 navigation_state_.GetUrl(frame_id)); |
378 } | 378 } |
379 | 379 |
380 void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame( | 380 void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame( |
381 content::RenderFrameHost* render_frame_host, | 381 content::RenderFrameHost* render_frame_host, |
382 const GURL& url, | 382 const GURL& url, |
383 content::PageTransition transition_type) { | 383 content::PageTransition transition_type) { |
384 content::RenderViewHost* render_view_host = | 384 content::RenderViewHost* render_view_host = |
385 render_frame_host->GetRenderViewHost(); | 385 render_frame_host->GetRenderViewHost(); |
386 DVLOG(2) << "DidCommitProvisionalLoad(" | 386 DVLOG(2) << "DidCommitProvisionalLoad(" |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 GURL frame_url = frame_navigation_state.GetUrl(internal_frame_id); | 746 GURL frame_url = frame_navigation_state.GetUrl(internal_frame_id); |
747 if (!frame_navigation_state.IsValidUrl(frame_url)) | 747 if (!frame_navigation_state.IsValidUrl(frame_url)) |
748 return true; | 748 return true; |
749 | 749 |
750 GetFrame::Results::Details frame_details; | 750 GetFrame::Results::Details frame_details; |
751 frame_details.url = frame_url.spec(); | 751 frame_details.url = frame_url.spec(); |
752 frame_details.error_occurred = | 752 frame_details.error_occurred = |
753 frame_navigation_state.GetErrorOccurredInFrame(internal_frame_id); | 753 frame_navigation_state.GetErrorOccurredInFrame(internal_frame_id); |
754 FrameNavigationState::FrameID parent_frame_id = | 754 FrameNavigationState::FrameID parent_frame_id = |
755 frame_navigation_state.GetParentFrameID(internal_frame_id); | 755 frame_navigation_state.GetParentFrameID(internal_frame_id); |
756 frame_details.parent_frame_id = helpers::GetFrameId( | 756 if (parent_frame_id.frame_num == -1) { |
757 frame_navigation_state.IsMainFrame(parent_frame_id), | 757 frame_details.parent_frame_id = -1; |
758 parent_frame_id.frame_num); | 758 } else { |
| 759 frame_details.parent_frame_id = |
| 760 helpers::GetFrameId(frame_navigation_state.IsMainFrame(parent_frame_id), |
| 761 parent_frame_id.frame_num); |
| 762 } |
759 results_ = GetFrame::Results::Create(frame_details); | 763 results_ = GetFrame::Results::Create(frame_details); |
760 return true; | 764 return true; |
761 } | 765 } |
762 | 766 |
763 bool WebNavigationGetAllFramesFunction::RunSync() { | 767 bool WebNavigationGetAllFramesFunction::RunSync() { |
764 scoped_ptr<GetAllFrames::Params> params(GetAllFrames::Params::Create(*args_)); | 768 scoped_ptr<GetAllFrames::Params> params(GetAllFrames::Params::Create(*args_)); |
765 EXTENSION_FUNCTION_VALIDATE(params.get()); | 769 EXTENSION_FUNCTION_VALIDATE(params.get()); |
766 int tab_id = params->details.tab_id; | 770 int tab_id = params->details.tab_id; |
767 | 771 |
768 SetResult(base::Value::CreateNullValue()); | 772 SetResult(base::Value::CreateNullValue()); |
(...skipping 24 matching lines...) Expand all Loading... |
793 FrameNavigationState::FrameID parent_frame_id = | 797 FrameNavigationState::FrameID parent_frame_id = |
794 navigation_state.GetParentFrameID(frame_id); | 798 navigation_state.GetParentFrameID(frame_id); |
795 GURL frame_url = navigation_state.GetUrl(frame_id); | 799 GURL frame_url = navigation_state.GetUrl(frame_id); |
796 if (!navigation_state.IsValidUrl(frame_url)) | 800 if (!navigation_state.IsValidUrl(frame_url)) |
797 continue; | 801 continue; |
798 linked_ptr<GetAllFrames::Results::DetailsType> frame( | 802 linked_ptr<GetAllFrames::Results::DetailsType> frame( |
799 new GetAllFrames::Results::DetailsType()); | 803 new GetAllFrames::Results::DetailsType()); |
800 frame->url = frame_url.spec(); | 804 frame->url = frame_url.spec(); |
801 frame->frame_id = helpers::GetFrameId( | 805 frame->frame_id = helpers::GetFrameId( |
802 navigation_state.IsMainFrame(frame_id), frame_id.frame_num); | 806 navigation_state.IsMainFrame(frame_id), frame_id.frame_num); |
803 frame->parent_frame_id = helpers::GetFrameId( | 807 if (parent_frame_id.frame_num == -1) { |
804 navigation_state.IsMainFrame(parent_frame_id), | 808 frame->parent_frame_id = -1; |
805 parent_frame_id.frame_num); | 809 } else { |
| 810 frame->parent_frame_id = |
| 811 helpers::GetFrameId(navigation_state.IsMainFrame(parent_frame_id), |
| 812 parent_frame_id.frame_num); |
| 813 } |
806 frame->process_id = frame_id.render_view_host->GetProcess()->GetID(); | 814 frame->process_id = frame_id.render_view_host->GetProcess()->GetID(); |
807 frame->error_occurred = navigation_state.GetErrorOccurredInFrame(frame_id); | 815 frame->error_occurred = navigation_state.GetErrorOccurredInFrame(frame_id); |
808 result_list.push_back(frame); | 816 result_list.push_back(frame); |
809 } | 817 } |
810 results_ = GetAllFrames::Results::Create(result_list); | 818 results_ = GetAllFrames::Results::Create(result_list); |
811 return true; | 819 return true; |
812 } | 820 } |
813 | 821 |
814 WebNavigationAPI::WebNavigationAPI(content::BrowserContext* context) | 822 WebNavigationAPI::WebNavigationAPI(content::BrowserContext* context) |
815 : browser_context_(context) { | 823 : browser_context_(context) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 return g_factory.Pointer(); | 856 return g_factory.Pointer(); |
849 } | 857 } |
850 | 858 |
851 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { | 859 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { |
852 web_navigation_event_router_.reset(new WebNavigationEventRouter( | 860 web_navigation_event_router_.reset(new WebNavigationEventRouter( |
853 Profile::FromBrowserContext(browser_context_))); | 861 Profile::FromBrowserContext(browser_context_))); |
854 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 862 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
855 } | 863 } |
856 | 864 |
857 } // namespace extensions | 865 } // namespace extensions |
OLD | NEW |