Add PolicyManager as plugin
authorYuta Doi <yuta-d@witz-inc.co.jp>
Mon, 9 Jul 2018 08:23:31 +0000 (17:23 +0900)
committerYuta Doi <yuta-d@witz-inc.co.jp>
Thu, 12 Jul 2018 00:24:56 +0000 (09:24 +0900)
commit99b6f4d2fcd421d3a760a88a67e511fb6fc98068
tree12c17f502e37b6742ead94e2d5bba07822300328
parent8ab10aaafc6fb3dc7bbad755dce9b4bdaa41f287
Add PolicyManager as plugin

PolicyManager decides next layout by using occured event and current state
based on the policy table.

And PolicyManager is plugin for WindowManager.
Therefore the OEMs can replace it.

This patch provides PolicyManager I/F as reference implementation
and does not have policy table.
Therefore PolicyManager updates each layers
to draw the applications in normal.full area
in accordance with just like activate/deactivate request.

[APIs of PolicyManager class]
  - int initialize(void)
    Initialize PolicyManger.
      input:  none
      output: 0(success), -1(error)

  - void registerCallback(CallbackTable callback_table)
    Register callback functions.
      input:  the pointers of callback handlers
      output: none

    "CallbackTable" type is as follows:
      typedef struct
      {
          Handler onStateTransitioned;
          Handler onError;
      } CallbackTable;

    "Handler" type is as follows:
      using Handler = std::function<void(json_object *)>;

  - int setInputEventData(json_object *json_in)
    Set input event data for the policy table.
      input:  input event data as json_object
      output: 0(success), -1(error)

  - int executeStateTransition(void)
    Execute state transition by using set input event data.
      input:  none
      output: 0(success), -1(error)

  - void undoState(void)
    Undo state only once per once state transition.
      input:  none
      output: none

[Callbacks of PolicyManager class]
 - void onStateTransitioned(json_object *json_out)
   When state transition succeeds, this callback is called.
   The argument json_out has the state after transition.

 - void onError(json_object *json_out)
   When state transition fails, this callback is called.
   The argument json_out has the error information
   like message, inputed event datas and etc..

Bug-AGL: SPEC-1537

Change-Id: I44b771d4145078bf3ea05e26165bb9c1a03b10c3
Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
19 files changed:
CMakeLists.txt
layers.json.split [deleted file]
src/CMakeLists.txt
src/json_helper.cpp
src/json_helper.hpp
src/main.cpp
src/pm_wrapper.cpp [new file with mode: 0644]
src/pm_wrapper.hpp [new file with mode: 0644]
src/policy_manager/CMakeLists.txt [new file with mode: 0644]
src/policy_manager/db/layouts.db [new file with mode: 0644]
src/policy_manager/db/roles.db [new file with mode: 0644]
src/policy_manager/db/roles.db.split [new file with mode: 0644]
src/policy_manager/policy_manager.cpp [new file with mode: 0644]
src/policy_manager/policy_manager.hpp [new file with mode: 0644]
src/policy_manager/stm/stub/src/CMakeLists.txt [new file with mode: 0644]
src/policy_manager/stm/stub/src/include/stm.h [new file with mode: 0644]
src/policy_manager/stm/stub/src/stm.c [new file with mode: 0644]
src/window_manager.cpp
src/window_manager.hpp