- (BOOL) mediaControlsHidden;
@end
+@interface SBLockScreenNotificationListController : NSObject
+- (BOOL) hasAnyContent;
+@end
+
@interface SBLockScreenViewController : UIViewController
- (SBLockScreenView *) lockScreenView;
- (BOOL) isShowingMediaControls;
- (void) _setMediaControlsVisible:(BOOL)visible;
+- (SBLockScreenNotificationListController *) _notificationController;
@end
@interface SBLockScreenManager : NSObject
namespace WebCore {
class KURL;
- class String;
}
+namespace WebCore {
+struct String {
+ void *impl_;
+}; }
+
namespace JSC {
struct SourceCode {
void *provider_;
@end
/* }}} */
+namespace WebCore {
+ class MediaQueryEvaluator;
+ class CSSParserValueList;
+}
+
+namespace WebCore {
+struct MediaQueryExp {
+ String feature_;
+ void *value_;
+ bool valid_;
+ String cache_;
+}; }
+
+MSHook(bool, _ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE, WebCore::MediaQueryEvaluator *_this, WebCore::String &query) {
+ Log(query); if (false) {
+ } else if (kCFCoreFoundationVersionNumber >= 800 && StringEquals(query, "cydget-media-controls")) {
+ SBLockScreenView *view([[[$SBLockScreenManager sharedInstance] lockScreenViewController] lockScreenView]);
+ return view != nil && ![view mediaControlsHidden];
+ //return [[[$SBLockScreenManager sharedInstance] lockScreenViewController] isShowingMediaControls];
+ } else if (kCFCoreFoundationVersionNumber >= 800 && StringEquals(query, "cydget-notification-list")) {
+ SBLockScreenNotificationListController *controller([[[$SBLockScreenManager sharedInstance] lockScreenViewController] _notificationController]);
+ return controller != nil && [controller hasAnyContent];
+ } else
+ return __ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE(_this, query);
+}
+
+MSHook(void, _ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE, WebCore::MediaQueryExp *_this, WebCore::String &query, WebCore::CSSParserValueList *values) {
+ Log(query);
+ __ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE(_this, query, values);
+ if (!_this->valid_) if (
+ StringEquals(query, "cydget-media-controls") ||
+ StringEquals(query, "cydget-notification-list") ||
+ false) _this->valid_ = true;
+}
+
template <typename Type_>
static void dlset(Type_ &function, const char *name) {
function = reinterpret_cast<Type_>(dlsym(RTLD_DEFAULT, name));
MSHookSymbol(_ZN7WebCore6String29charactersWithNullTerminationEv, "__ZN3WTF6String29charactersWithNullTerminationEv", JavaScriptCore);
msset(_ZNK7WebCore6String6lengthEv, WebCore);
+
+ bool (*_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE)(WebCore::MediaQueryEvaluator *, WebCore::String &);
+ msset(_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE, WebCore);
+ if (_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE != NULL)
+ MSHookFunction(_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE, MSHake(_ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE));
+
+ void (*_ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE)(WebCore::MediaQueryExp *, WebCore::String &, WebCore::CSSParserValueList *);
+ msset(_ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE, WebCore);
+ if (_ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE != NULL)
+ MSHookFunction(_ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE, MSHake(_ZN7WebCore13MediaQueryExpC2ERKN3WTF12AtomicStringEPNS_18CSSParserValueListE));
}
+ (id) rootViewController {