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

Side by Side Diff: chrome/browser/permissions/permission_request_manager_test_api.cc

Issue 2666523002: Allow permission bubbles to participate in key event dispatch as if they were a Browser. (Closed)
Patch Set: Parameterize test, Comments, nits Created 3 years, 10 months 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
(Empty)
1 // Copyright 2017 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 #include "chrome/browser/permissions/permission_request_manager_test_api.h"
6
7 #include <memory>
8
9 #include "chrome/browser/permissions/permission_request_impl.h"
10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/tabs/tab_strip_model.h"
12
13 namespace test {
14 namespace {
15
16 // Wraps a PermissionRequestImpl so that it can pass a closure to itself to the
17 // PermissionRequestImpl constructor. Without this wrapper, there's no way to
18 // handle all destruction paths.
19 class TestPermisisonRequestOwner {
20 public:
21 TestPermisisonRequestOwner(Profile* profile, content::PermissionType type) {
22 bool user_gesture = true;
23 auto decided = [](bool, ContentSetting) {};
24 content::PermissionType permission = content::PermissionType::GEOLOCATION;
25 request_ = base::MakeUnique<PermissionRequestImpl>(
26 GURL("https://example.com"), permission, profile, user_gesture,
27 base::Bind(decided), base::Bind(&TestPermisisonRequestOwner::DeleteThis,
28 base::Unretained(this)));
29 }
30
31 PermissionRequestImpl* request() { return request_.get(); }
32
33 private:
34 void DeleteThis() { delete this; }
35
36 std::unique_ptr<PermissionRequestImpl> request_;
37
38 DISALLOW_COPY_AND_ASSIGN(TestPermisisonRequestOwner);
39 };
40
41 } // namespace
42
43 PermissionRequestManagerTestApi::PermissionRequestManagerTestApi(
44 PermissionRequestManager* manager)
45 : manager_(manager) {}
46
47 PermissionRequestManagerTestApi::PermissionRequestManagerTestApi(
48 Browser* browser)
49 : PermissionRequestManagerTestApi(PermissionRequestManager::FromWebContents(
50 browser->tab_strip_model()->GetActiveWebContents())) {}
51
52 void PermissionRequestManagerTestApi::AddSimpleRequest(
53 Profile* profile,
54 content::PermissionType type) {
55 TestPermisisonRequestOwner* request_owner =
56 new TestPermisisonRequestOwner(profile, type);
57 manager_->AddRequest(request_owner->request());
58 }
59
60 gfx::NativeWindow PermissionRequestManagerTestApi::GetPromptWindow() {
61 return manager_->view_ ? manager_->view_->GetNativeWindow() : nullptr;
62 }
63
64 } // namespace test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698