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
3 // found in the LICENSE file.
5 #ifndef MOJO_SHELL_CONTENT_HANDLER_CONNECTION_H_
6 #define MOJO_SHELL_CONTENT_HANDLER_CONNECTION_H_
10 #include "mojo/application/public/interfaces/content_handler.mojom.h"
11 #include "mojo/shell/capability_filter.h"
17 class ApplicationInstance
;
18 class ApplicationManager
;
20 // A ContentHandlerConnection is responsible for creating and maintaining a
21 // connection to an app which provides the ContentHandler service.
22 // A ContentHandlerConnection can only be destroyed via CloseConnection.
23 // A ContentHandlerConnection manages its own lifetime and cannot be used with
24 // a scoped_ptr to avoid reentrant calls into ApplicationManager late in
26 class ContentHandlerConnection
{
28 ContentHandlerConnection(ApplicationInstance
* originator
,
29 ApplicationManager
* manager
,
30 const GURL
& content_handler_url
,
31 const GURL
& requestor_url
,
32 const std::string
& qualifier
,
33 const CapabilityFilter
& filter
);
35 // Closes the connection and destroys |this| object.
36 void CloseConnection();
38 ContentHandler
* content_handler() { return content_handler_
.get(); }
39 const GURL
& content_handler_url() { return content_handler_url_
; }
40 const std::string
& content_handler_qualifier() {
41 return content_handler_qualifier_
;
45 ~ContentHandlerConnection();
47 ApplicationManager
* manager_
;
48 GURL content_handler_url_
;
49 std::string content_handler_qualifier_
;
50 ContentHandlerPtr content_handler_
;
51 bool connection_closed_
;
53 DISALLOW_COPY_AND_ASSIGN(ContentHandlerConnection
);
59 #endif // MOJO_SHELL_CONTENT_HANDLER_CONNECTION_H_