better steps
All right, grepping at the message ids in the public.xml (look at previous post), I was able to find one place where all the checks happen before streaming.
smali\com\hulu\thornx\app\c.smali
Now, I'll try to explain my logic as best I can... feel free to follow the code here:
http: / / pastebin.com / FBrsje1j
grepping each message ID results in this:
Code:
:cond_1a
new-instance v0, Lcom/hulu/thornx/app/g;
const v1, 0x7f0b00bc
const v2, 0x7f0b00bd
invoke-direct {v0, v1, v2}, Lcom/hulu/thornx/app/g;-><init>(II)V
goto/16 :goto_1
:cond_1b
new-instance v0, Lcom/hulu/thornx/app/g;
const v1, 0x7f0b00c0
const v2, 0x7f0b00c1
invoke-direct {v0, v1, v2}, Lcom/hulu/thornx/app/g;-><init>(II)V
goto/16 :goto_1
Essentially, it seems to say:
Condition 1A:
Create a new instance of something v0 (I think it's a message dialogue)
Give the variable v1 the value of 0x7f0b00bc
(which is user_message_process_drm_error_title
= "Streaming Unavailable
")
Give the variable v2 the value of 0x7f0b00bd
(which is user_message_process_drm_error_message = "Sorry, we are unable to stream this video. Please check your Internet connection, ensure you have the latest official update for your device, and try again.
")
Invoke v0 (dialogue) with v1 (title) and v2 (message)
Code:
Condition 1B:
Create a new instance of something v0 (I think it's a message dialogue)
Give the variable v1 the value of 0x7f0b00c0
(which is user_message_drm_error_title = "DRM Error")
Give the variable v2 the value of 0x7f0b00c1
(which is user_message_drm_error_message = "Sorry, we are unable to play this video at the moment. Please check that you have all the latest updates applied to your device and try again.")
Invoke v0 (dialogue) with v1 (title) and v2 (message)
So, essentially Condition 1A and 1B seem to be errors resulting from a failed DRM check. In fact, all conditions 1X seem to be errors that cause the playback to hang:
1C:
Title: user_message_whoops = Whoops!
Message: user_message_unknown_user_error_message_d = Something funny happened.
1D:
Title: user_message_bad_response_title = Bad Response From Server
Message: user_message_bad_response_message_s = We're sorry, but we couldn't parse the response from the server.
1E:
Title: user_message_unknown_error_title = Unknown Error
Message: user_message_unknown_error_message_s_s = %1$s%2$s
Interesting thing to note is that every 1X condition ends with :goto_1 (which to me means that ":goto_1" = bad and possibly ":goto_0" = good)
Searching the file for :cond_1a :cond_1b :cond_1c :cond_1d :cond_1e we can see what calls them:
1D calls 1E; 1C calls 1D; cond_18 calls 1C; and cond_19 calls both 1A and 1B.
Aside from calling cond_1C, cond_18 can also call cond_19 or give out an error with:
Title: user_message_widevine_not_supported_title = Required DRM not supported
Message: user_message_widevine_not_supported_message = Your device does not seem to have support for the required DRM engine. Please check that you have all the latest updates applied to your device and try again.
now, cond_18 is called by cond_17, which can also give the error:
Title: user_message_streaming_error_title = Streaming Unavailable
Message: Sorry, we are unable to stream this video. Please check your Internet connection and try again.
cond_17 is called by cond_15, which can also call cond_16
cond_16 has following error:
Title: user_message_service_error_title = Service Unavailable
Message: user_message_service_error_message_s_s = Hulu Plus could not complete the operation, because an important service is unavailable.
To be continued...