aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes2015-04-09 15:40:31 -0500
committerElliott Hughes2015-04-09 15:40:31 -0500
commit9e7ae8a62652258f3ecbf147b578b73286f6d4d8 (patch)
treef614a82b9b246e72327fe00ca1ecf8d616d94a0e /device.h
parent52222a58417e7e6349e91e19e4f5e293a3a971c5 (diff)
downloadplatform-bootable-recovery-9e7ae8a62652258f3ecbf147b578b73286f6d4d8.tar.gz
platform-bootable-recovery-9e7ae8a62652258f3ecbf147b578b73286f6d4d8.tar.xz
platform-bootable-recovery-9e7ae8a62652258f3ecbf147b578b73286f6d4d8.zip
Move default implementations into Device.
The current abstract class was a nice idea but has led to a lot of copy & paste in practice. Right now, no one we know of has any extra menu items, so let's make the default menu available to everyone. (If we assume that someone somewhere really does need custom device-specific menu options, a better API would let them add to our menu rather than replacing it.) Change-Id: I59f6a92f3ecd830c2ce78ce9da19eaaf472c5dfa
Diffstat (limited to 'device.h')
-rw-r--r--device.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/device.h b/device.h
index 8ff4ec03..a2454006 100644
--- a/device.h
+++ b/device.h
@@ -21,13 +21,14 @@
21 21
22class Device { 22class Device {
23 public: 23 public:
24 Device(RecoveryUI* ui) : ui_(ui) { }
24 virtual ~Device() { } 25 virtual ~Device() { }
25 26
26 // Called to obtain the UI object that should be used to display 27 // Called to obtain the UI object that should be used to display
27 // the recovery user interface for this device. You should not 28 // the recovery user interface for this device. You should not
28 // have called Init() on the UI object already, the caller will do 29 // have called Init() on the UI object already, the caller will do
29 // that after this method returns. 30 // that after this method returns.
30 virtual RecoveryUI* GetUI() = 0; 31 virtual RecoveryUI* GetUI() { return ui_; }
31 32
32 // Called when recovery starts up (after the UI has been obtained 33 // Called when recovery starts up (after the UI has been obtained
33 // and initialized and after the arguments have been parsed, but 34 // and initialized and after the arguments have been parsed, but
@@ -70,6 +71,17 @@ class Device {
70 APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE, 71 APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE,
71 REBOOT_BOOTLOADER, SHUTDOWN, READ_RECOVERY_LASTLOG }; 72 REBOOT_BOOTLOADER, SHUTDOWN, READ_RECOVERY_LASTLOG };
72 73
74 // Return the headers (an array of strings, one per line,
75 // NULL-terminated) for the main menu. Typically these tell users
76 // what to push to move the selection and invoke the selected
77 // item.
78 virtual const char* const* GetMenuHeaders();
79
80 // Return the list of menu items (an array of strings,
81 // NULL-terminated). The menu_position passed to InvokeMenuItem
82 // will correspond to the indexes into this array.
83 virtual const char* const* GetMenuItems();
84
73 // Perform a recovery action selected from the menu. 85 // Perform a recovery action selected from the menu.
74 // 'menu_position' will be the item number of the selected menu 86 // 'menu_position' will be the item number of the selected menu
75 // item, or a non-negative number returned from 87 // item, or a non-negative number returned from
@@ -79,7 +91,7 @@ class Device {
79 // builtin actions, you can just return the corresponding enum 91 // builtin actions, you can just return the corresponding enum
80 // value. If it is an action specific to your device, you 92 // value. If it is an action specific to your device, you
81 // actually perform it here and return NO_ACTION. 93 // actually perform it here and return NO_ACTION.
82 virtual BuiltinAction InvokeMenuItem(int menu_position) = 0; 94 virtual BuiltinAction InvokeMenuItem(int menu_position);
83 95
84 static const int kNoAction = -1; 96 static const int kNoAction = -1;
85 static const int kHighlightUp = -2; 97 static const int kHighlightUp = -2;
@@ -94,16 +106,8 @@ class Device {
94 // are erased AFTER this returns (whether it returns success or not). 106 // are erased AFTER this returns (whether it returns success or not).
95 virtual int WipeData() { return 0; } 107 virtual int WipeData() { return 0; }
96 108
97 // Return the headers (an array of strings, one per line, 109 private:
98 // NULL-terminated) for the main menu. Typically these tell users 110 RecoveryUI* ui_;
99 // what to push to move the selection and invoke the selected
100 // item.
101 virtual const char* const* GetMenuHeaders() = 0;
102
103 // Return the list of menu items (an array of strings,
104 // NULL-terminated). The menu_position passed to InvokeMenuItem
105 // will correspond to the indexes into this array.
106 virtual const char* const* GetMenuItems() = 0;
107}; 111};
108 112
109// The device-specific library must define this function (or the 113// The device-specific library must define this function (or the