> -----Original Message----- > From: Crosswalk-dev [mailto:crosswalk-dev-bounces@lists.crosswalk- > project.org] On Behalf Of Pozdnyakov, Mikhail > Sent: Friday, November 22, 2013 10:41 PM > To: crosswalk-dev@lists.crosswalk-project.org > Subject: [Crosswalk-dev] Proposal for design improvements in XWalk > runtime > > Hi, > > Here I would like to propose briefly a plan of XWalk runtime refactoring/re- > design. This is not an "intend-to-implement" message so far but it is rather a > heads-up and an invitation for a discussion. > > The rationals (dude, what's the problem with the current design? > everything works perfect already! ): > > - The current design does not allow shared process model architecture on > runtime side, meaning that all the runtime(!) will be screwed up if more > than one application runs. > Almost all 'runtime' classes (except event manager :) ) are expected to > work only with a single application. > - Name of classes is totaly misleading making it hard to comprehend what's > going on ("Runtime" which is not actually a runtime, "RuntimeContext" > which is not actually a runtime context and so on). > - The functionality of classes is not clear making it hard to introduce new > features. > - Object's lifecycle and ownership is not clear (should I bring examples to > prove it?) > > If you disagree with the last three rationals please try to answer at least > these following questions (so natural for a web runtime design) in terms of > XWalk classes: > Which object is representing a running application (don't say "Application" > class! because "Application" class is representing application meta-data :) )? > Who manages the running applications and controls their life-cycle? > Which object represents an application's web page? > Which object shows the application web page (decides how/where to show > it)? > > High level design changes (by me & Alex Shalamov) > > Main intentions: > - provide functionality that would allow to run several applications at the > same time > - decouple chromium adaptation and xwalk runtime logic > - make it easier to comprehend the code > > List of changes: > > XWalkContentBrowserClient: > - Not a singleton anymore > - Will accept XWalkCmdLineStrategy object - a delegate(strategy) object for > handling the cmd line arguments. > > XWalkCmdLineStrategy (maybe there is a better name): > - A strategy class encapsulating cmd line parsing and showing a browser > window or invoking an app (depending on cmd line parameters) > - Owned by XWalkContentBrowserClient > - XWalkCmdLineStrategy will encapsulate the logic currently present at > ApplicationSystem's HandleApplicationManagementCommands() and > LaunchFromCommandLine() methods and also at > part of XWalkBrowserMainParts::PreMainMessageLoopRun() logic. [Ming, Bai] Do we still need to support command line options for each application/browser launching? I think after the shared runtime process mode is ready, we need to remove the simple browser mode, and merge the functionality to xwalk-launcher, like xwalk-launcher --launch="http://ffda" or anything like that. The command line parsing will only happen once, when the daemon starts up.
> > XWalkBrowserContext: > - The present RuntimeContext should be renamed to XWalkBrowserContext > - XWalkBrowserContext should not own any appliction classes > - XWalkBrowserContext is created by main parts and passed to an > XWalkApplicationManager object > > XWalkApplicationManager: > - a new singleton class ( its instance is created by mainparts but there is > global function to access the instance from outside) > - Application manager is responsible for launching applications, managing > the running applications, installation/uninstallation of applications, > providing application services > - XWalkApplicationManager will substitute the present ApplicationSystem > and ApplicationService classes > - XWalkApplicationManager will own ApplicationStorage and > ApplicationEventManager > > XWalkApplicationMetaData: > - The present Application class will be renamed to ApplicationMetaData. > > XWalkApplication: > - A new class representing an application > - XWalkApplication class will encapsulate functionalty of present > ApplicationProcessManager, RuntimeRegistry and (partially) Runtime > classes > - XWalkApplication will be owned be ApplicationManager > - XWalkApplication will contain ApplicationMetaData data member > - XWalkApplication will contain list of XWalkApplicationPages. [Ming, Bai] Does the XWalkApplication class represents a static application abstraction, or a running application instance? > > XWalkApplicationPage: > - A new class representing a web page (There's one-to-one correspondence > between WebContents and > XWalkApplicationPage). > - XWalkApplicationPage will encapsulate most of the logic currently present > in Runtime class > - XWalkApplicationPage will be owned by the corresponding > XWalkApplication instance. > > XWalkApplicationPageDisplayStrategy (better name here is also possible :) ) > - A new strategy class encapsulating the logic for showing an application > page > - This class will substitute present Runtime::AttachDefaultWindow and > Runtime::AttachWindow methods. > - No restricted ownership. In principal can be allocated even on stack. > > The design doc (and class diagram) is coming. [Ming, Bai] Thanks for the help on refactoring all the classes, it's better to discuss the implementation details in somewhere like google doc rather than a ML, looking forward to that. > > Comments and questions are appreciated. > > BR, > Mikhail > --------------------------------------------------------------------- > Intel Finland Oy > Registered Address: PL 281, 00181 Helsinki Business Identity Code: 0357606 - > 4 Domiciled in Helsinki > > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). Any review or distribution by others is > strictly prohibited. If you are not the intended recipient, please contact the > sender and delete all copies. > > _______________________________________________ > Crosswalk-dev mailing list > Crosswalk-dev@lists.crosswalk-project.org > https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-dev _______________________________________________ Crosswalk-dev mailing list Crosswalk-dev@lists.crosswalk-project.org https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-dev