- add sources.
[platform/framework/web/crosswalk.git] / src / content / public / common / page_transition_types.h
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
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_PUBLIC_COMMON_PAGE_TRANSITION_TYPES_H_
6 #define CONTENT_PUBLIC_COMMON_PAGE_TRANSITION_TYPES_H_
7
8 #include "base/basictypes.h"
9 #include "content/common/content_export.h"
10
11 namespace content {
12
13 enum PageTransition {
14
15 #define PAGE_TRANSITION(label, value) PAGE_TRANSITION_ ## label = value,
16 #include "content/public/common/page_transition_types_list.h"
17 #undef PAGE_TRANSITION
18
19 };
20
21 // Compares two PageTransition types ignoring qualifiers. |rhs| is taken to
22 // be a compile time constant, and hence must not contain any qualifiers.
23 CONTENT_EXPORT bool PageTransitionCoreTypeIs(PageTransition lhs,
24                                              PageTransition rhs);
25
26 // Simplifies the provided transition by removing any qualifier
27 CONTENT_EXPORT PageTransition PageTransitionStripQualifier(
28     PageTransition type);
29
30 bool PageTransitionIsValidType(int32 type);
31
32 CONTENT_EXPORT PageTransition PageTransitionFromInt(int32 type);
33
34 // Returns true if the given transition is a top-level frame transition, or
35 // false if the transition was for a subframe.
36 CONTENT_EXPORT bool PageTransitionIsMainFrame(PageTransition type);
37
38 // Returns whether a transition involves a redirection
39 CONTENT_EXPORT bool PageTransitionIsRedirect(PageTransition type);
40
41 // Return the qualifier
42 CONTENT_EXPORT int32 PageTransitionGetQualifier(PageTransition type);
43
44 // Returns true if the transition can be triggered by the web instead of
45 // through UI or similar.
46 CONTENT_EXPORT bool PageTransitionIsWebTriggerable(PageTransition type);
47
48 // Return a string version of the core type values.
49 CONTENT_EXPORT const char* PageTransitionGetCoreTransitionString(
50     PageTransition type);
51
52 // TODO(joth): Remove the #if guard here; requires all chrome layer code to
53 // be fixed up not to use operator==
54 #if defined(CONTENT_IMPLEMENTATION)
55 // Declare a dummy class that is intentionally never defined.
56 class DontUseOperatorEquals;
57
58 // Ban operator== as it's way too easy to forget to strip the qualifiers. Use
59 // PageTransitionCoreTypeIs() instead.
60 DontUseOperatorEquals operator==(PageTransition, PageTransition);
61 DontUseOperatorEquals operator==(PageTransition, int);
62 DontUseOperatorEquals operator==(int, PageTransition);
63 #endif  // defined(CONTENT_IMPLEMENTATION)
64
65 }  // namespace content
66
67 #endif  // CONTENT_PUBLIC_COMMON_PAGE_TRANSITION_TYPES_H_