Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(210)

Side by Side Diff: third_party/WebKit/Source/modules/app_banner/AppBannerController.cpp

Issue 2393513004: Convert app banners to use Mojo. (Closed)
Patch Set: Add TODO Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "modules/app_banner/AppBannerController.h" 5 #include "modules/app_banner/AppBannerController.h"
6 6
7 #include "core/EventTypeNames.h" 7 #include "core/EventTypeNames.h"
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/frame/DOMWindow.h" 9 #include "core/frame/DOMWindow.h"
10 #include "core/frame/LocalFrame.h" 10 #include "core/frame/LocalFrame.h"
11 #include "modules/app_banner/BeforeInstallPromptEvent.h" 11 #include "modules/app_banner/BeforeInstallPromptEvent.h"
12 #include "public/platform/WebVector.h" 12 #include "mojo/public/cpp/bindings/strong_binding.h"
13 #include "public/platform/modules/app_banner/WebAppBannerClient.h" 13 #include "platform/weborigin/KURL.h"
14 #include "public/platform/modules/app_banner/WebAppBannerPromptReply.h" 14 #include "platform/weborigin/Referrer.h"
15 #include "platform/weborigin/SecurityPolicy.h"
16 #include "wtf/PtrUtil.h"
17 #include "wtf/text/AtomicString.h"
18 #include <memory>
19 #include <utility>
15 20
16 namespace blink { 21 namespace blink {
17 22
18 // static 23 AppBannerController::AppBannerController(LocalFrame& frame) : m_frame(frame) {}
19 void AppBannerController::willShowInstallBannerPrompt( 24
20 int requestId, 25 void AppBannerController::bindMojoRequest(
21 WebAppBannerClient* client,
22 LocalFrame* frame, 26 LocalFrame* frame,
23 const WebVector<WebString>& platforms, 27 mojom::blink::AppBannerControllerRequest request) {
24 WebAppBannerPromptReply* reply) { 28 DCHECK(frame);
25 Vector<String> wtfPlatforms;
26 for (const WebString& platform : platforms)
27 wtfPlatforms.append(platform);
28 29
29 // dispatchEvent() returns whether the default behavior can happen. In other 30 mojo::MakeStrongBinding(wrapUnique(new AppBannerController(*frame)),
30 // words, it returns false if preventDefault() was called. 31 std::move(request));
31 *reply = 32 }
32 frame->domWindow()->dispatchEvent(BeforeInstallPromptEvent::create( 33
33 EventTypeNames::beforeinstallprompt, frame->document(), wtfPlatforms, 34 void AppBannerController::BannerPromptRequest(
34 requestId, client)) == DispatchEventResult::NotCanceled 35 mojom::blink::AppBannerServicePtr servicePtr,
35 ? WebAppBannerPromptReply::None 36 mojom::blink::AppBannerEventRequest eventRequest,
36 : WebAppBannerPromptReply::Cancel; 37 const Vector<String>& platforms,
38 const BannerPromptRequestCallback& callback) {
39 if (!m_frame || !m_frame->document()) {
40 callback.Run(mojom::blink::AppBannerPromptReply::NONE, "");
41 return;
42 }
43
44 mojom::AppBannerPromptReply reply =
45 m_frame->domWindow()->dispatchEvent(BeforeInstallPromptEvent::create(
46 EventTypeNames::beforeinstallprompt, *m_frame, std::move(servicePtr),
47 std::move(eventRequest), platforms)) ==
48 DispatchEventResult::NotCanceled
49 ? mojom::AppBannerPromptReply::NONE
50 : mojom::AppBannerPromptReply::CANCEL;
51
52 AtomicString referrer = SecurityPolicy::generateReferrer(
53 m_frame->document()->getReferrerPolicy(), KURL(),
54 m_frame->document()->outgoingReferrer())
55 .referrer;
56
57 callback.Run(reply, referrer.isNull() ? emptyString() : referrer);
37 } 58 }
38 59
39 } // namespace blink 60 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698