Chromium Code Reviews| Index: chrome/browser/ui/browser_navigator.cc |
| diff --git a/chrome/browser/ui/browser_navigator.cc b/chrome/browser/ui/browser_navigator.cc |
| index 02a5e8fbd261039c46b400d647a841450a9f2fe3..916e68729368a515a769996136cd9e1150a2551d 100644 |
| --- a/chrome/browser/ui/browser_navigator.cc |
| +++ b/chrome/browser/ui/browser_navigator.cc |
| @@ -10,9 +10,11 @@ |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| +#include "chrome/browser/apps/app_url_redirector.h" |
| #include "chrome/browser/browser_about_handler.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| +#include "chrome/browser/extensions/extension_system.h" |
| #include "chrome/browser/extensions/tab_helper.h" |
| #include "chrome/browser/google/google_url_tracker.h" |
| #include "chrome/browser/prefs/incognito_mode_prefs.h" |
| @@ -39,6 +41,7 @@ |
| #include "content/public/browser/render_view_host.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_contents_view.h" |
| +#include "extensions/common/switches.h" |
|
not at google - send to devlin
2013/09/04 15:37:21
unused?
sergeygs
2013/09/05 09:19:03
Done.
|
| #if defined(USE_AURA) |
| #include "ui/aura/window.h" |
| @@ -475,9 +478,25 @@ void Navigate(NavigateParams* params) { |
| if (!AdjustNavigateParamsForURL(params)) |
| return; |
| - ExtensionService* service = params->initiating_profile->GetExtensionService(); |
| - if (service) |
| - service->ShouldBlockUrlInBrowserTab(¶ms->url); |
| + // See if the extension service wants to block this navigation or some |
| + // platform app wants to intercept it. |
| + extensions::ExtensionSystem* system = |
|
benwells
2013/09/04 23:54:20
It's unfortunate this code has to be here. This fu
sergeygs
2013/09/05 09:19:03
To answer the last question: because this deals on
|
| + extensions::ExtensionSystem::Get(params->initiating_profile); |
| + if (system) { |
| + ExtensionService* service = system->extension_service(); |
| + if (service && service->ShouldBlockUrlInBrowserTab(¶ms->url)) { |
| + // Proceed. The call just rewrites the URL to the error page: we still |
| + // have to display it. |
| + } else { |
| + if (AppUrlRedirector::MaybeLaunchAppWithUrl( |
| + params->initiating_profile, |
|
not at google - send to devlin
2013/09/04 15:37:21
Just grab the AppUrlRedirector from the initiating
benwells
2013/09/04 23:54:20
At the moment the redirector is a tab helper (or w
not at google - send to devlin
2013/09/05 00:01:52
Yes, realised this later after chatting to Sergey.
sergeygs
2013/09/05 09:19:03
Obsolete.
|
| + params->url, |
| + params->referrer.url)) { |
| + // An app has intercepted the navigation: cancel it here. |
| + return; |
| + } |
| + } |
| + } |
| // The browser window may want to adjust the disposition. |
| if (params->disposition == NEW_POPUP && |