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

Side by Side Diff: mojo/apps/js/js_app.h

Issue 687273002: mojo: Update content handler API (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Use the new content handler mechanism for js Created 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef MOJO_APPS_JS_JS_APP_H_ 5 #ifndef MOJO_APPS_JS_JS_APP_H_
6 #define MOJO_APPS_JS_JS_APP_H_ 6 #define MOJO_APPS_JS_JS_APP_H_
7 7
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/threading/thread.h" 9 #include "base/threading/thread.h"
10 #include "gin/public/isolate_holder.h" 10 #include "gin/public/isolate_holder.h"
11 #include "gin/shell_runner.h" 11 #include "gin/shell_runner.h"
12 #include "mojo/apps/js/mojo_runner_delegate.h" 12 #include "mojo/apps/js/mojo_runner_delegate.h"
13 #include "mojo/services/public/interfaces/content_handler/content_handler.mojom. h" 13 #include "mojo/public/cpp/application/application_delegate.h"
14 #include "mojo/public/interfaces/application/application.mojom.h"
15 #include "mojo/public/interfaces/application/shell.mojom.h"
16 #include "mojo/services/public/interfaces/network/url_loader.mojom.h"
14 17
15 namespace mojo { 18 namespace mojo {
16 namespace apps { 19 namespace apps {
17 20
18 class JSApp; 21 class JSApp;
19 class ApplicationDelegateImpl; 22 class ApplicationDelegateImpl;
20 23
21 // Each JavaScript app started by content handler runs on its own thread and 24 // Each JavaScript app started by content handler runs on its own thread and
22 // in its own V8 isolate. This class represents one running JS app. 25 // in its own V8 isolate. This class represents one running JS app.
23 26
24 class JSApp { 27 class JSApp : public InterfaceImpl<Application> {
25 public: 28 public:
26 JSApp(ApplicationDelegateImpl* app_delegate_impl); 29 JSApp(ShellPtr shell, URLResponsePtr response);
27 virtual ~JSApp(); 30 virtual ~JSApp();
28 31
29 // Launch this app on a new thread. This method can be called on any thread.
30 // This method causes Load() and then Run() to run on a new thread.
31 bool Start();
32
33 // Subclasses must return the JS source code for this app's main script and
34 // the filename or URL that identifies the script's origin. This method will
35 // be called from this app's thread.
36 virtual bool Load(std::string* source, std::string* file_name) = 0;
37
38 // Called by the JS mojo module to quit this JS app. See mojo.js. 32 // Called by the JS mojo module to quit this JS app. See mojo.js.
39 void Quit(); 33 void Quit();
40 34
41 // Called by the JS mojo module to connect to a Mojo application. 35 // Called by the JS mojo module to connect to a Mojo application.
42 MessagePipeHandle ConnectToApplication(const std::string& application_url); 36 MessagePipeHandle ConnectToApplication(const std::string& application_url);
43 37
44 // Called by the JS mojo module to retrieve the ServiceProvider message 38 // Called by the JS mojo module to retrieve the ServiceProvider message
45 // pipe handle passed to the JS content handler's OnConnect() method. 39 // pipe handle passed to the JS content handler's OnConnect() method.
46 // If this app was not launched by the content handler then return an 40 MessagePipeHandle RequestorMessagePipeHandle();
47 // invalid Mojo handle.
48 virtual MessagePipeHandle RequestorMessagePipeHandle() = 0;
49 41
50 private: 42 private:
51 void Run(); 43 // Application methods:
52 void Terminate(); 44 void AcceptConnection(const String& requestor_url,
45 ServiceProviderPtr provider) override;
46 void Initialize(Array<String> args) override;
53 47
54 // Used to CHECK that we're running on the correct thread. 48 void QuitInternal();
55 bool on_app_delegate_impl_thread() const;
56 bool on_js_app_thread() const;
57 49
58 ApplicationDelegateImpl* app_delegate_impl_; 50 ShellPtr shell_;
59 base::Thread thread_; 51 MojoRunnerDelegate runner_delegate;
60 scoped_refptr<base::SingleThreadTaskRunner> app_delegate_impl_task_runner_; 52 gin::IsolateHolder isolate_holder_;
61 scoped_refptr<base::SingleThreadTaskRunner> js_app_task_runner_;
62 MojoRunnerDelegate runner_delegate_;
63 scoped_ptr<gin::IsolateHolder> isolate_holder_;
64 scoped_ptr<gin::ShellRunner> shell_runner_; 53 scoped_ptr<gin::ShellRunner> shell_runner_;
54 std::string source_;
55 std::string file_name_;
56 ScopedMessagePipeHandle requestor_handle_;
65 57
66 DISALLOW_COPY_AND_ASSIGN(JSApp); 58 DISALLOW_COPY_AND_ASSIGN(JSApp);
67 }; 59 };
68 60
69 } // namespace apps 61 } // namespace apps
70 } // namespace mojo 62 } // namespace mojo
71 63
72 #endif // MOJO_APPS_JS_JS_APP_H_ 64 #endif // MOJO_APPS_JS_JS_APP_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698