]>
Commit | Line | Data |
---|---|---|
3e2f2a0b AD |
1 | // Copyright 2007, Google Inc. |
2 | // | |
3 | // Redistribution and use in source and binary forms, with or without | |
4 | // modification, are permitted provided that the following conditions are met: | |
5 | // | |
6 | // 1. Redistributions of source code must retain the above copyright notice, | |
7 | // this list of conditions and the following disclaimer. | |
8 | // 2. Redistributions in binary form must reproduce the above copyright notice, | |
9 | // this list of conditions and the following disclaimer in the documentation | |
10 | // and/or other materials provided with the distribution. | |
11 | // 3. Neither the name of Google Inc. nor the names of its contributors may be | |
12 | // used to endorse or promote products derived from this software without | |
13 | // specific prior written permission. | |
14 | // | |
15 | // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED | |
16 | // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
17 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |
18 | // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
19 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
20 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | |
21 | // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | |
22 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | |
23 | // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |
24 | // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
25 | // | |
26 | // Sets up google.gears.*, which is *the only* supported way to access Gears. | |
27 | // | |
28 | // Circumvent this file at your own risk! | |
29 | // | |
30 | // In the future, Gears may automatically define google.gears.* without this | |
31 | // file. Gears may use these objects to transparently fix bugs and compatibility | |
32 | // issues. Applications that use the code below will continue to work seamlessly | |
33 | // when that happens. | |
34 | ||
35 | (function() { | |
36 | // We are already defined. Hooray! | |
37 | if (window.google && google.gears) { | |
38 | return; | |
39 | } | |
40 | ||
41 | var factory = null; | |
42 | ||
43 | // Firefox | |
44 | if (typeof GearsFactory != 'undefined') { | |
45 | factory = new GearsFactory(); | |
46 | } else { | |
47 | // IE | |
48 | try { | |
49 | factory = new ActiveXObject('Gears.Factory'); | |
50 | // privateSetGlobalObject is only required and supported on IE Mobile on | |
51 | // WinCE. | |
52 | if (factory.getBuildInfo().indexOf('ie_mobile') != -1) { | |
53 | factory.privateSetGlobalObject(this); | |
54 | } | |
55 | } catch (e) { | |
56 | // Safari | |
57 | if ((typeof navigator.mimeTypes != 'undefined') | |
58 | && navigator.mimeTypes["application/x-googlegears"]) { | |
59 | factory = document.createElement("object"); | |
60 | factory.style.display = "none"; | |
61 | factory.width = 0; | |
62 | factory.height = 0; | |
63 | factory.type = "application/x-googlegears"; | |
64 | document.documentElement.appendChild(factory); | |
65 | } | |
66 | } | |
67 | } | |
68 | ||
69 | // *Do not* define any objects if Gears is not installed. This mimics the | |
70 | // behavior of Gears defining the objects in the future. | |
71 | if (!factory) { | |
72 | return; | |
73 | } | |
74 | ||
75 | // Now set up the objects, being careful not to overwrite anything. | |
76 | // | |
77 | // Note: In Internet Explorer for Windows Mobile, you can't add properties to | |
78 | // the window object. However, global objects are automatically added as | |
79 | // properties of the window object in all browsers. | |
80 | if (!window.google) { | |
81 | google = {}; | |
82 | } | |
83 | ||
84 | if (!google.gears) { | |
85 | google.gears = {factory: factory}; | |
86 | } | |
87 | })(); |