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 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 if (old_host) { | 247 if (old_host) { |
248 RenderFrameDeleted(old_host); | 248 RenderFrameDeleted(old_host); |
249 navigation_state_.FrameHostDeleted(old_host); | 249 navigation_state_.FrameHostDeleted(old_host); |
250 } | 250 } |
251 | 251 |
252 navigation_state_.FrameHostCreated(new_host); | 252 navigation_state_.FrameHostCreated(new_host); |
253 } | 253 } |
254 | 254 |
255 void WebNavigationTabObserver::DidStartNavigation( | 255 void WebNavigationTabObserver::DidStartNavigation( |
256 content::NavigationHandle* navigation_handle) { | 256 content::NavigationHandle* navigation_handle) { |
257 if (navigation_handle->IsSamePage() || | 257 if (navigation_handle->IsSameDocument() || |
258 !FrameNavigationState::IsValidUrl(navigation_handle->GetURL())) { | 258 !FrameNavigationState::IsValidUrl(navigation_handle->GetURL())) { |
259 return; | 259 return; |
260 } | 260 } |
261 | 261 |
262 pending_on_before_navigate_event_ = | 262 pending_on_before_navigate_event_ = |
263 helpers::CreateOnBeforeNavigateEvent(navigation_handle); | 263 helpers::CreateOnBeforeNavigateEvent(navigation_handle); |
264 | 264 |
265 // Only dispatch the onBeforeNavigate event if the associated WebContents | 265 // Only dispatch the onBeforeNavigate event if the associated WebContents |
266 // is already added to the tab strip. Otherwise the event should be delayed | 266 // is already added to the tab strip. Otherwise the event should be delayed |
267 // and sent after the addition, to preserve the ordering of events. | 267 // and sent after the addition, to preserve the ordering of events. |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 event_router->BroadcastEvent(std::move(pending_on_before_navigate_event_)); | 415 event_router->BroadcastEvent(std::move(pending_on_before_navigate_event_)); |
416 } | 416 } |
417 | 417 |
418 void WebNavigationTabObserver::HandleCommit( | 418 void WebNavigationTabObserver::HandleCommit( |
419 content::NavigationHandle* navigation_handle) { | 419 content::NavigationHandle* navigation_handle) { |
420 bool is_reference_fragment_navigation = IsReferenceFragmentNavigation( | 420 bool is_reference_fragment_navigation = IsReferenceFragmentNavigation( |
421 navigation_handle->GetRenderFrameHost(), navigation_handle->GetURL()); | 421 navigation_handle->GetRenderFrameHost(), navigation_handle->GetURL()); |
422 | 422 |
423 navigation_state_.StartTrackingDocumentLoad( | 423 navigation_state_.StartTrackingDocumentLoad( |
424 navigation_handle->GetRenderFrameHost(), navigation_handle->GetURL(), | 424 navigation_handle->GetRenderFrameHost(), navigation_handle->GetURL(), |
425 navigation_handle->IsSamePage(), | 425 navigation_handle->IsSameDocument(), |
426 false); // is_error_page | 426 false); // is_error_page |
427 | 427 |
428 events::HistogramValue histogram_value = events::UNKNOWN; | 428 events::HistogramValue histogram_value = events::UNKNOWN; |
429 std::string event_name; | 429 std::string event_name; |
430 if (is_reference_fragment_navigation) { | 430 if (is_reference_fragment_navigation) { |
431 histogram_value = events::WEB_NAVIGATION_ON_REFERENCE_FRAGMENT_UPDATED; | 431 histogram_value = events::WEB_NAVIGATION_ON_REFERENCE_FRAGMENT_UPDATED; |
432 event_name = web_navigation::OnReferenceFragmentUpdated::kEventName; | 432 event_name = web_navigation::OnReferenceFragmentUpdated::kEventName; |
433 } else if (navigation_handle->IsSamePage()) { | 433 } else if (navigation_handle->IsSameDocument()) { |
434 histogram_value = events::WEB_NAVIGATION_ON_HISTORY_STATE_UPDATED; | 434 histogram_value = events::WEB_NAVIGATION_ON_HISTORY_STATE_UPDATED; |
435 event_name = web_navigation::OnHistoryStateUpdated::kEventName; | 435 event_name = web_navigation::OnHistoryStateUpdated::kEventName; |
436 } else { | 436 } else { |
437 histogram_value = events::WEB_NAVIGATION_ON_COMMITTED; | 437 histogram_value = events::WEB_NAVIGATION_ON_COMMITTED; |
438 event_name = web_navigation::OnCommitted::kEventName; | 438 event_name = web_navigation::OnCommitted::kEventName; |
439 } | 439 } |
440 helpers::DispatchOnCommitted(histogram_value, event_name, navigation_handle); | 440 helpers::DispatchOnCommitted(histogram_value, event_name, navigation_handle); |
441 } | 441 } |
442 | 442 |
443 void WebNavigationTabObserver::HandleError( | 443 void WebNavigationTabObserver::HandleError( |
444 content::NavigationHandle* navigation_handle) { | 444 content::NavigationHandle* navigation_handle) { |
445 if (navigation_handle->HasCommitted()) { | 445 if (navigation_handle->HasCommitted()) { |
446 navigation_state_.StartTrackingDocumentLoad( | 446 navigation_state_.StartTrackingDocumentLoad( |
447 navigation_handle->GetRenderFrameHost(), navigation_handle->GetURL(), | 447 navigation_handle->GetRenderFrameHost(), navigation_handle->GetURL(), |
448 navigation_handle->IsSamePage(), | 448 navigation_handle->IsSameDocument(), |
449 true); // is_error_page | 449 true); // is_error_page |
450 } | 450 } |
451 | 451 |
452 helpers::DispatchOnErrorOccurred(navigation_handle); | 452 helpers::DispatchOnErrorOccurred(navigation_handle); |
453 } | 453 } |
454 | 454 |
455 // See also NavigationController::IsURLInPageNavigation. | 455 // See also NavigationController::IsURLInPageNavigation. |
456 bool WebNavigationTabObserver::IsReferenceFragmentNavigation( | 456 bool WebNavigationTabObserver::IsReferenceFragmentNavigation( |
457 content::RenderFrameHost* render_frame_host, | 457 content::RenderFrameHost* render_frame_host, |
458 const GURL& url) { | 458 const GURL& url) { |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 return g_factory.Pointer(); | 582 return g_factory.Pointer(); |
583 } | 583 } |
584 | 584 |
585 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { | 585 void WebNavigationAPI::OnListenerAdded(const EventListenerInfo& details) { |
586 web_navigation_event_router_.reset(new WebNavigationEventRouter( | 586 web_navigation_event_router_.reset(new WebNavigationEventRouter( |
587 Profile::FromBrowserContext(browser_context_))); | 587 Profile::FromBrowserContext(browser_context_))); |
588 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 588 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
589 } | 589 } |
590 | 590 |
591 } // namespace extensions | 591 } // namespace extensions |
OLD | NEW |