const char kSplashScreenAppControlOperationKey[] = "@app-control-operation";
const char kSplashScreenColorDepthKey[] = "@color-depth";
+// res-control
+const char kResControlKey[] = "res-control";
+const char kResControlResourceTypeKey[] = "@resource-type";
+const char kResControlMinResVersionKey[] = "@min-res-version";
+const char kResControlMaxResVersionKey[] = "@max-res-version";
+const char kResControlAutoCloseKey[] = "@auto-close";
+
} // namespace tpk_app_keys
} // namespace parse
extern const char kSplashScreenAppControlOperationKey[];
extern const char kSplashScreenColorDepthKey[];
+// res-control
+extern const char kResControlKey[];
+extern const char kResControlResourceTypeKey[];
+extern const char kResControlMinResVersionKey[];
+extern const char kResControlMaxResVersionKey[];
+extern const char kResControlAutoCloseKey[];
+
} // namespace tpk_app_keys
class ApplicationInfo : public parser::ManifestData {
std::vector<LabelInfo> label;
std::vector<std::string> categories;
ApplicationSplashScreenInfo app_splashscreens;
+ std::vector<ResControlInfo> res_controls;
};
template<typename T>
return true;
}
+template<typename T>
+bool ParseResControl(const parser::DictionaryValue& dict,
+ T* info, std::string*) {
+ std::string resource_type;
+ if (!dict.GetString(tpk_app_keys::kResControlResourceTypeKey,
+ &resource_type))
+ return true;
+ std::string min_res_version;
+ dict.GetString(tpk_app_keys::kResControlMinResVersionKey, &min_res_version);
+ std::string max_res_version;
+ dict.GetString(tpk_app_keys::kResControlMaxResVersionKey, &max_res_version);
+ std::string auto_close;
+ dict.GetString(tpk_app_keys::kResControlAutoCloseKey, &auto_close);
+ info->res_controls.emplace_back(resource_type,
+ min_res_version, max_res_version, auto_close);
+
+ return true;
+}
+
template<typename T>
using ParsingFuncPtr =
std::function<bool(const parser::DictionaryValue&, T*, std::string*)>;
if (!InitializeParsingElement(app_dict, tpk_app_keys::kSplashScreensKey,
parsingFunc, applicationinfo, error))
return false;
+ parsingFunc = ParseResControl<ComponentBasedApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+ parsingFunc, applicationinfo, error))
+ return false;
return true;
}
if (!InitializeParsingElement(app_dict, tpk_app_keys::kCategoryKey,
parsingFunc, serviceapplicationinfo, error))
return false;
+ parsingFunc = ParseResControl<ServiceApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+ parsingFunc, serviceapplicationinfo, error))
+ return false;
return true;
}
std::string xml_lang_;
};
+// ResControl
+class ResControlInfo : public parser::ManifestData {
+ public:
+ ResControlInfo(const std::string& resource_type,
+ const std::string& min_res_version,
+ const std::string& max_res_version,
+ const std::string& auto_close)
+ : resource_type_(resource_type),
+ min_res_version_(min_res_version),
+ max_res_version_(max_res_version),
+ auto_close_(auto_close) {}
+
+ const std::string& resource_type() const {
+ return resource_type_;
+ }
+ const std::string& min_res_version() const {
+ return min_res_version_;
+ }
+ const std::string& max_res_version() const {
+ return max_res_version_;
+ }
+ const std::string& auto_close() const {
+ return auto_close_;
+ }
+
+ private:
+ std::string resource_type_;
+ std::string min_res_version_;
+ std::string max_res_version_;
+ std::string auto_close_;
+};
+
} // namespace parse
} // namespace tpk
if (!InitializeParsingElement(app_dict, tpk_app_keys::kSplashScreensKey,
parsingFunc, uiapplicationinfo, error))
return false;
+ parsingFunc = ParseResControl<UIApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+ parsingFunc, uiapplicationinfo, error))
+ return false;
return true;
}
if (!InitializeParsingElement(app_dict, tpk_app_keys::kBackgroundCategoryKey,
parsingFunc, widgetapplicationinfo, error))
return false;
+ parsingFunc = ParseResControl<WatchApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+ parsingFunc, widgetapplicationinfo, error))
+ return false;
return true;
}
if (!InitializeParsingElement(app_dict, tpk_app_keys::kCategoryKey,
parsingFunc, widgetapplicationinfo, error))
return false;
+ parsingFunc = ParseResControl<WidgetApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kResControlKey,
+ parsingFunc, widgetapplicationinfo, error))
+ return false;
return true;
}