| 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 |