OLD | NEW |
1 #!mojo mojo:js_content_handler | 1 #!mojo mojo:js_content_handler |
2 // Demonstrate using the mojo window_manager application to "embed" a view that | 2 // Demonstrate using the mojo window_manager application to "embed" a view that |
3 // displays an image. To run this application set BUILD_DIR to the build | 3 // displays an image. To run this application set BUILD_DIR to the build |
4 // directory (like "src/out/Debug") and append a PNG image URL as the url | 4 // directory (like "src/out/Debug") and append a PNG image URL as the url |
5 // paramaeter for: absolute path for this directory, then: | 5 // paramaeter for: absolute path for this directory, then: |
6 // sky/tools/skydb start $BUILD_DIR examples/js/show_image.js?url=<PNG URL> | 6 // sky/tools/skydb start $BUILD_DIR examples/js/show_image.js?url=<PNG URL> |
7 // The skydb application starts an HTTP server that points at the build and | 7 // The skydb application starts an HTTP server that points at the build and |
8 // and source directories. It starts a simple - just one view - window manager | 8 // and source directories. It starts a simple - just one view - window manager |
9 // and then embeds this application in its root view. This application just | 9 // and then embeds this application in its root view. This application just |
10 // asks the same window manager to embed the PNG viewer. Doing so effectively | 10 // asks the same window manager to embed the PNG viewer. Doing so effectively |
11 // removes this application from the window manager's root view. | 11 // removes this application from the window manager's root view. |
12 | 12 |
13 define("main", [ | 13 define("main", [ |
14 "mojo/services/public/js/application", | 14 "mojo/services/public/js/application", |
15 "mojo/services/public/js/service_provider", | 15 "mojo/services/public/js/service_provider", |
16 "mojo/services/window_manager/public/interfaces/window_manager.mojom", | 16 "mojo/services/window_manager/public/interfaces/window_manager.mojom", |
17 ], function(application, serviceProvider, windowManager) { | 17 "third_party/js/url", |
| 18 ], function(application, serviceProvider, windowManager, url) { |
18 | 19 |
19 const Application = application.Application; | 20 const Application = application.Application; |
20 const ServiceProvider = serviceProvider.ServiceProvider; | 21 const ServiceProvider = serviceProvider.ServiceProvider; |
21 const WindowManager = windowManager.WindowManager; | 22 const WindowManager = windowManager.WindowManager; |
| 23 const URL = url.URL; |
22 const defaultImageURL = | 24 const defaultImageURL = |
23 "http://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%28
2011%29.png"; | 25 "http://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%28
2011%29.png"; |
24 | 26 |
25 var windowManager; | |
26 var windowManagerSP; | |
27 | |
28 class WindowManagerClientImpl { | |
29 // An empty stub for now. | |
30 } | |
31 | |
32 class ShowImage extends Application { | 27 class ShowImage extends Application { |
33 initialize() { | 28 initialize() { |
34 var imageURLKey = "?url="; | 29 var imageURL = new URL(this.url, true).query.url || defaultImageURL; |
35 var imageURLIndex = this.url.indexOf(imageURLKey); | 30 var windowManager = this.shell.connectToService( |
36 var imageURL = (imageURLIndex == -1) ? defaultImageURL : | 31 "mojo:window_manager", WindowManager, {} /* empty WindowManagerClient */
); |
37 this.url.substring(imageURLIndex + imageURLKey.length); | 32 windowManager.embed(imageURL, function() { /* no ServiceProvider */ }); |
38 | |
39 windowManager = this.shell.connectToService( | |
40 "mojo:window_manager", WindowManager, new WindowManagerClientImpl); | |
41 windowManager.embed(imageURL, function(spProxy) { | |
42 windowManagerSP = new ServiceProvider(spProxy); | |
43 }); | |
44 | 33 |
45 // Displaying imageURL is now the responsibility of the Mojo application | 34 // Displaying imageURL is now the responsibility of the Mojo application |
46 // launched by its content handler. We're done. | 35 // launched by its content handler. We're done. |
47 this.quit(); | 36 this.quit(); |
48 } | 37 } |
49 } | 38 } |
50 | 39 |
51 return ShowImage; | 40 return ShowImage; |
52 }); | 41 }); |
53 | 42 |
OLD | NEW |