<mode name="ex1" type="normal">
<action ID="wifiOn" rule="test.printBool" priority="-100">on</action>
<action rule="test.launch" before="GoPbsKids">com.vpn.usa123</action>
- <action ID="GoPbsKids" rule="test.url" after="wifiOn">https://pbskids.org/</action>
+ <action ID="GoPbsKids" rule="web.url" after="wifiOn">https://pbskids.org/</action>
<action ID="BMJ" rule="test.connect">Modes-JBL</action>
<action rule="test.player" after="BMJ">beatles-yesterday.mp3</action>
<action ID="1" rule="test.printInt" priority="-100"
<?xml version="1.0" encoding="UTF-8"?>
<tizenModes xmlns="http://www.tizen.org" version="6.0">
<actionRule>
- <rule name="test.changeAccuracy" type="int" since="6.0" plugin="test">
+ <rule name="test.changeAccuracy" type="int" since="6.0">
<conflict>test.exactness</conflict>
<desc>Sensor Accuracy</desc>
<domain>System</domain>
</rule>
- <rule name="test.exactness" type="int" since="6.0" plugin="test">
+ <rule name="test.exactness" type="int" since="6.0">
<conflict>test.changeAccuracy</conflict>
<desc>Sensor Exactness</desc>
<domain>System</domain>
</rule>
- <rule name="test.url" type="string" since="6.0" plugin="test">
+ <rule name="test.url" type="string" since="6.0">
<desc>browser</desc>
<domain>Web Framework</domain>
</rule>
- <rule name="test.nightLight" type="int" since="6.0" plugin="test">
+ <rule name="test.nightLight" type="int" since="6.0">
<conflict>display.autoLight</conflict>
<desc>It makes the screen color warmer.</desc>
<domain>System</domain>
</rule>
- <rule name="test.printInt" type="int" since="6.0" plugin="test">
+ <rule name="test.printInt" type="int" since="6.0">
<alias name="PRINT_ZERO">0</alias>
<alias name="PRINT_ONE">1</alias>
<alias name="PRINT_TWO">2</alias>
<desc>It prints integer value</desc>
<domain>System</domain>
</rule>
- <rule name="test.printBool" type="bool" since="6.0" plugin="test">
+ <rule name="test.printBool" type="bool" since="6.0">
<alias name="on">1</alias>
<alias name="off">0</alias>
<desc>It prints boolean value</desc>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<tizenModes xmlns="http://www.tizen.org" version="6.0">
+ <actionRule>
+ <rule name="sensor.changeAccuracy" type="int" since="6.0" plugin="test1">
+ <conflict>sensor.exactness</conflict>
+ <desc>Sensor Accuracy</desc>
+ <domain>System</domain>
+ </rule>
+ <rule name="sensor.exactness" type="int" since="6.0" plugin="test">
+ <conflict>sensor.changeAccuracy</conflict>
+ <desc>Sensor Exactness</desc>
+ <domain>System</domain>
+ </rule>
+ <rule name="web.url" type="string" since="6.0" plugin="test">
+ <desc>browser</desc>
+ <domain>Web Framework</domain>
+ </rule>
+ </actionRule>
+</tizenModes>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<tizenModes xmlns="http://www.tizen.org" version="6.0">
+ <actionRule>
+ <rule name="testErr.nightLight" type="int" since="6.0">
+ <conflict>display.autoLight</conflict>
+ <desc>It makes the screen color warmer.</desc>
+ <domain>System</domain>
+ </rule>
+ <rule name="test.launch" type="string" since="6.0">
+ <desc>Launch App</desc>
+ <domain>App Framework</domain>
+ </rule>
+ <rule name="test.connect" type="string" since="6.0">
+ <desc>bluetooth Audio Connect</desc>
+ <domain>Network & Connectivity</domain>
+ </rule>
+ <rule name="test.player" type="string" since="6.0">
+ <desc>Audio/Video player</desc>
+ <domain>Multimedia</domain>
+ </rule>
+ </actionRule>
+</tizenModes>
<?xml version="1.0" encoding="UTF-8"?>
<tizenModes xmlns="http://www.tizen.org" version="6.0">
<actionRule>
- <rule name="test.changeAccuracy" type="int" since="6.0" plugin="test">
+ <rule name="test.changeAccuracy" type="int" since="6.0">
<conflict>test.exactness</conflict>
<desc>Sensor Accuracy</desc>
<domain>System</domain>
</rule>
- <rule name="test.exactness" type="int" since="6.0" plugin="test">
+ <rule name="test.exactness" type="int" since="6.0">
<conflict>test.changeAccuracy</conflict>
<desc>Sensor Exactness</desc>
<domain>System</domain>
</rule>
- <rule name="test.url" type="string" since="6.0" plugin="test">
+ <rule name="test.url" type="string" since="6.0">
<desc>browser</desc>
<domain>Web Framework</domain>
</rule>
- <rule name="test.nightLight" type="int" since="6.0" plugin="test">
+ <rule name="test.nightLight" type="int" since="6.0">
<conflict>display.autoLight</conflict>
<desc>It makes the screen color warmer.</desc>
<domain>System</domain>
</rule>
- <rule name="test.printInt" type="int" since="6.0" plugin="test">
+ <rule name="test.printInt" type="int" since="6.0">
<alias name="PRINT_ZERO">0</alias>
<alias name="PRINT_ONE">1</alias>
<alias name="PRINT_TWO">2</alias>
<desc>It prints integer value</desc>
<domain>System</domain>
</rule>
- <rule name="test.printBool" type="bool" since="6.0" plugin="test">
+ <rule name="test.printBool" type="bool" since="6.0">
<alias name="on">1</alias>
<alias name="off">0</alias>
<desc>It prints boolean value</desc>
<?xml version="1.0" encoding="UTF-8"?>
<tizenModes xmlns="http://www.tizen.org" version="6.0">
<actionRule>
- <rule name="test.changeAccuracy" type="int" since="6.0" plugin="test">
- <conflict>test.exactness</conflict>
+ <rule name="sensor.changeAccuracy" type="int" since="6.0" plugin="test">
+ <conflict>sensor.exactness</conflict>
<desc>Sensor Accuracy</desc>
<domain>System</domain>
</rule>
- <rule name="test.exactness" type="int" since="6.0" plugin="test">
- <conflict>test.changeAccuracy</conflict>
+ <rule name="sensor.exactness" type="int" since="6.0" plugin="test">
+ <conflict>sensor.changeAccuracy</conflict>
<desc>Sensor Exactness</desc>
<domain>System</domain>
</rule>
- <rule name="test.url" type="string" since="6.0" plugin="test">
+ <rule name="web.url" type="string" since="6.0" plugin="test">
<desc>browser</desc>
<domain>Web Framework</domain>
</rule>
- <rule name="test.nightLight" type="int" since="6.0" plugin="test">
+ <rule name="test.nightLight" type="int" since="6.0">
<conflict>display.autoLight</conflict>
<desc>It makes the screen color warmer.</desc>
<domain>System</domain>
</rule>
- <rule name="test.launch" type="string" since="6.0" plugin="test">
+ <rule name="test.launch" type="string" since="6.0">
<desc>Launch App</desc>
<domain>App Framework</domain>
</rule>
- <rule name="test.connect" type="string" since="6.0" plugin="test">
+ <rule name="test.connect" type="string" since="6.0">
<desc>bluetooth Audio Connect</desc>
<domain>Network & Connectivity</domain>
</rule>
- <rule name="test.player" type="string" since="6.0" plugin="test">
+ <rule name="test.player" type="string" since="6.0">
<desc>Audio/Video player</desc>
<domain>Multimedia</domain>
</rule>
- <rule name="test.printInt" type="int" since="6.0" plugin="test">
+ <rule name="test.printInt" type="int" since="6.0">
<alias name="PRINT_ZERO">0</alias>
<alias name="PRINT_ONE">1</alias>
<alias name="PRINT_TWO">2</alias>
<desc>It prints integer value</desc>
<domain>System</domain>
</rule>
- <rule name="test.printBool" type="bool" since="6.0" plugin="test">
+ <rule name="test.printBool" type="bool" since="6.0">
<alias name="on">1</alias>
<alias name="off">0</alias>
<privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
<desc>It prints double value</desc>
<domain>System</domain>
</rule>
- <rule name="test.printString" type="string" since="6.0" plugin="test">
+ <rule name="test.printString" type="string" since="6.0">
<privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
<desc>It prints string value</desc>
<domain>System</domain>
</rule>
- <rule name="test.sleep" type="int" since="6.0" plugin="test">
+ <rule name="test.sleep" type="int" since="6.0">
<privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
<desc>Sleep</desc>
<domain>System</domain>
</rule>
- <rule name="test.sleepErrorReturn" type="int" since="6.0" plugin="test">
+ <rule name="test.sleepErrorReturn" type="int" since="6.0">
<desc>Sleep and return error after value seconds</desc>
<domain>System</domain>
</rule>
- <rule name="test.changeTime" type="int" since="6.0" plugin="test">
+ <rule name="test.changeTime" type="int" since="6.0">
<desc>Call Change callback after value seconds</desc>
<domain>System</domain>
</rule>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" type="o:basicTypeT" use="required" />
<xs:attribute name="since" type="o:versionT" use="required" />
- <xs:attribute name="plugin" type="xs:string" use="required" />
+ <xs:attribute name="plugin" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
} else {
actionRule = new TActionRule<string>(name);
}
- actionRule->setPlugin(piMapper.getPlugin(pluginName));
+
+ if (pluginName.empty())
+ pluginName = name.substr(0, name.find_first_of("."));
+
+ Plugin *plugin = piMapper.getPlugin(pluginName);
+ if (nullptr == plugin) {
+ ERR("Unknown plugin Name(%s)", pluginName.c_str());
+ throw ModesEx(ModesEx::NO_DATA, "Unknown plugin Name");
+ }
+
+ actionRule->setPlugin(plugin);
for (xmlNode *cur = node->children; cur; cur = cur->next) {
if (xmlIsBlankNode(cur))
continue;
config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
config.undoInfoDir = ".";
config.undoInfoDir = ".";
+ config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
- ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, ".");
+ ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
ruleMgr.start();
careTaker.setOptions(config.undoInfoDir);
}
ModesConfig config;
config.actionRuleDir = ".";
config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
- config.pluginDir = ".";
+ config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
ruleMgr.start();
ModesConfig config;
config.actionRuleDir = ".";
config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
- config.pluginDir = ".";
+ config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
- ruleMgr.setOptions(std::string(), config.actionRuleXsdFile, config.pluginDir);
- ruleMgr.parseActionRule("./tizen_test_rule.xml");
+ ruleMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
+ ruleMgr.start();
}
list<shared_ptr<Action>> ParserTest::getActionList(Mode& m)
ModesConfig config;
config.actionRuleDir = ".";
config.actionRuleXsdFile = "./" MODES_ACTIONRULE_DEFAULT_XSD_FILE;
- config.pluginDir = ".";
+ config.pluginDir = "../../.." MODES_PLUGIN_DEFAULT_DIR;
rMgr.setOptions(config.actionRuleDir, config.actionRuleXsdFile, config.pluginDir);
+ rMgr.piMapper.loadPlugins();
}
TEST(RuleManagerTest, makeRuleMapP)
EXPECT_THROW(testBroker.parseActionRule("./tizen_aliasValueErr.xml"), ModesEx);
EXPECT_TRUE(testBroker.emptyRuleMap());
}
+
+TEST(RuleManagerTest, UnknownPlugin1)
+{
+ RuleManagerTest testBroker;
+ EXPECT_THROW(testBroker.parseActionRule("./tizen_pluginErr1_rule.xml"), ModesEx);
+}
+
+TEST(RuleManagerTest, UnknownPlugin2)
+{
+ RuleManagerTest testBroker;
+ EXPECT_THROW(testBroker.parseActionRule("./tizen_pluginErr2_rule.xml"), ModesEx);
+}