What's new? | Help | Directory | Sign in
Google
             
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#summary Work needed to support new browsers and keep features in sync across all platforms.
#labels DesignDoc-Implemented,Deprecated

=PROBLEM=

Since the launch of Gears, only Internet Explorer and Firefox have always had the latest features. Safari support has lagged behind. Other browsers, like Windows Mobile, have not been supported at all.

=SOLUTION=

We can fix the problem by doing two things:
# Formalize the browser abstractions that exist today. This will make it easier to support new browsers.
# Have only one (shared) implementation of each Gears module. This will ensure all browsers get the latest features.

The `/base` directory will contain all browser-specific underpinnings. Each abstraction will consist of a shared interface, and some combination of shared code and browser-specific code. For example:

{{{
/base/file.h // single interface
/base/file.cc // code that is shared
/base/file_ie.cc // code that is IE-specific
/base/file_ff.cc // code that is Firefox-specific
}}}

Each Gears module will live in its own directory. Modules will have a single implementation, based on browser-neutral types (`int`, `bool`, `string16`). There will also be a browser-specific interface definition file.

{{{
/database/database.h // single interface
/database/database.cc // single implementation
/database/database_ie.idl // interface definition for IE
/database/database_ff.idl // interface definition for Firefox
}}}

Code for each module should depend only on `/base` and not on other modules.

=DETAILS=

Some initial work items come to mind:

# Look through `/base/common` to understand what abstractions exist today. Understand whether these abstractions can be implemented on additional browsers.
# Move some abstractions into `/base`. These examples come to mind:
* http_request
* http_constants
# Move non-abstractions out of `/base`. These examples come to mind:
* factory
# Make any changes required to share a single module (perhaps `Database`?) across Firefox and IE. Known work items:
* implement !JsParamFetcher for IE
* switch to a consistent LOG() framework
Show details Hide details

Change log

r1346 by gears.team.aa on Apr 10, 2008   Diff
This is basically done, I don't think we
need it on the front page of the wiki list
anymore. Whee!
Go to: 
Project members, sign in to write a code review

Older revisions

r326 by cpri...@google.com on Oct 08, 2007   Diff
Edited wiki page through web user
interface.
r322 by cpri...@google.com on Oct 04, 2007   Diff
Edited wiki page through web user
interface.
r321 by cpri...@google.com on Oct 04, 2007   Diff
Edited wiki page through web user
interface.
All revisions of this file

File info

Size: 2184 bytes, 46 lines