OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #include "chrome/browser/chromeos/arc/page_transition_util.h" | 5 #include "chrome/browser/chromeos/arc/page_transition_util.h" |
6 | 6 |
7 namespace arc { | 7 namespace arc { |
8 | 8 |
9 bool ShouldIgnoreNavigation(ui::PageTransition page_transition) { | 9 bool ShouldIgnoreNavigation(ui::PageTransition page_transition, |
| 10 bool allow_form_submit) { |
10 // Mask out server-sided redirects only. | 11 // Mask out server-sided redirects only. |
11 page_transition = ui::PageTransitionFromInt( | 12 page_transition = ui::PageTransitionFromInt( |
12 page_transition & ~ui::PAGE_TRANSITION_SERVER_REDIRECT); | 13 page_transition & ~ui::PAGE_TRANSITION_SERVER_REDIRECT); |
13 | 14 |
14 if (!ui::PageTransitionCoreTypeIs(page_transition, | 15 if (!ui::PageTransitionCoreTypeIs(page_transition, |
15 ui::PAGE_TRANSITION_LINK)) { | 16 ui::PAGE_TRANSITION_LINK) && |
| 17 !(allow_form_submit && |
| 18 ui::PageTransitionCoreTypeIs(page_transition, |
| 19 ui::PAGE_TRANSITION_FORM_SUBMIT))) { |
16 // Do not handle the |url| if this event wasn't spawned by the user clicking | 20 // Do not handle the |url| if this event wasn't spawned by the user clicking |
17 // on a link. | 21 // on a link. |
18 return true; | 22 return true; |
19 } | 23 } |
20 | 24 |
21 if (ui::PageTransitionGetQualifier(page_transition) != 0) { | 25 if (ui::PageTransitionGetQualifier(page_transition) != 0) { |
22 // Qualifiers indicate that this navigation was the result of a click on a | 26 // Qualifiers indicate that this navigation was the result of a click on a |
23 // forward/back button, or typing in the URL bar, or a client-side redirect, | 27 // forward/back button, or typing in the URL bar, or a client-side redirect, |
24 // etc. Don't handle any of those types of navigations. | 28 // etc. Don't handle any of those types of navigations. |
25 return true; | 29 return true; |
26 } | 30 } |
27 | 31 |
28 return false; | 32 return false; |
29 } | 33 } |
30 | 34 |
31 } // namespace arc | 35 } // namespace arc |
OLD | NEW |