Create string tightly when retrive string from cbhm callback event
[framework/web/webkit-efl.git] / Source / WebKit2 / UIProcess / API / efl / ewk_navigation_policy_decision_private.h
1 /*
2  * Copyright (C) 2012 Intel Corporation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef ewk_navigation_policy_decision_private_h
27 #define ewk_navigation_policy_decision_private_h
28
29 #include "WKAPICast.h"
30 #include "WKBase.h"
31 #include "WKEinaSharedString.h"
32 #include "WKEvent.h"
33 #include "WKFramePolicyListener.h"
34 #include "WKPageLoadTypes.h"
35 #include "WKRetainPtr.h"
36 #include "ewk_url_request_private.h"
37 #include <wtf/PassRefPtr.h>
38
39 /**
40  * \struct  Ewk_Navigation_Policy_Decision
41  * @brief   Contains the navigation policy decision data.
42  */
43 class Ewk_Navigation_Policy_Decision : public RefCounted<Ewk_Navigation_Policy_Decision> {
44 public:
45     WKRetainPtr<WKFramePolicyListenerRef> listener;
46     bool actedUponByClient;
47     Ewk_Navigation_Type navigationType;
48     Event_Mouse_Button mouseButton;
49     Event_Modifier_Keys modifiers;
50     RefPtr<Ewk_Url_Request> request;
51     WKEinaSharedString frameName;
52
53     ~Ewk_Navigation_Policy_Decision()
54     {
55         // This is the default choice for all policy decisions in WebPageProxy.cpp.
56         if (!actedUponByClient)
57             WKFramePolicyListenerUse(listener.get());
58     }
59
60     static PassRefPtr<Ewk_Navigation_Policy_Decision> create(WKFrameNavigationType navigationType, WKEventMouseButton mouseButton, WKEventModifiers modifiers, WKURLRequestRef requestRef, const char* frameName, WKFramePolicyListenerRef listener)
61     {
62         RefPtr<Ewk_Url_Request> request = Ewk_Url_Request::create(requestRef);
63         return adoptRef(new Ewk_Navigation_Policy_Decision(listener, static_cast<Ewk_Navigation_Type>(navigationType), static_cast<Event_Mouse_Button>(mouseButton), static_cast<Event_Modifier_Keys>(modifiers), request.release(), frameName));
64     }
65
66 private:
67     Ewk_Navigation_Policy_Decision(WKFramePolicyListenerRef listener, Ewk_Navigation_Type navigationType, Event_Mouse_Button mouseButton, Event_Modifier_Keys modifiers, PassRefPtr<Ewk_Url_Request> request, const char* frameName)
68         : listener(listener)
69         , actedUponByClient(false)
70         , navigationType(navigationType)
71         , mouseButton(mouseButton)
72         , modifiers(modifiers)
73         , request(request)
74         , frameName(frameName)
75     { }
76 };
77
78 #endif // ewk_navigation_policy_decision_private_h