)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2936,"name":"Ethan Chen","email":"intervigil@gmail.com","username":"intervigil","avatars":[{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"50fccaa2901ee5f3ee04ec3838913eba81e4bc1b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"camera: Check if aux camera whitelist is set before restricting cameras"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some devices have a fully featured 3rd camera and adding 20+"},{"line_number":10,"context_line":"camera apps to the whitelist is not just stupid, it\u0027s impossible"},{"line_number":11,"context_line":"due to the string length limit on systemprops. Add a check to see"},{"line_number":12,"context_line":"if the prop is even set, and if not, just restore the original"},{"line_number":13,"context_line":"behaviour and expose all the cameras to all the apps."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"178536de_bd70d955","line":11,"range":{"start_line":9,"start_character":50,"end_line":11,"end_character":45},"updated":"2018-06-25 05:39:53.000000000","message":"Let\u0027s clean up the language","commit_id":"3428ddfd55e1578717534b45d73396d025b03c5b"}],"core/java/android/hardware/Camera.java":[{"author":{"_account_id":2936,"name":"Ethan Chen","email":"intervigil@gmail.com","username":"intervigil","avatars":[{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"50fccaa2901ee5f3ee04ec3838913eba81e4bc1b","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                    return true;"},{"line_number":289,"context_line":"                }"},{"line_number":290,"context_line":"            }"},{"line_number":291,"context_line":"        } else {"},{"line_number":292,"context_line":"            return true;"},{"line_number":293,"context_line":"        }"},{"line_number":294,"context_line":"        return false;"},{"line_number":295,"context_line":"    }"}],"source_content_type":"text/x-java","patch_set":3,"id":"c80379ee_0b4133a1","line":292,"range":{"start_line":291,"start_character":8,"end_line":292,"end_character":24},"updated":"2018-06-25 05:39:53.000000000","message":"So if the property is not set, expose? This logic is a little weird, because if the property is not set, the default behavior is to expose the aux camera. If it is set, check against the whitelist.\n\nI would probably propose rewriting the logic to make it more obvious.","commit_id":"3428ddfd55e1578717534b45d73396d025b03c5b"},{"author":{"_account_id":2936,"name":"Ethan Chen","email":"intervigil@gmail.com","username":"intervigil","avatars":[{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"38c17174256fbb2ecbb49dd917595b9d1dcaae7f","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            TextUtils.StringSplitter splitter \u003d new TextUtils.SimpleStringSplitter(\u0027,\u0027);"},{"line_number":285,"context_line":"            splitter.setString(packageList);"},{"line_number":286,"context_line":"            for (String str : splitter) {"},{"line_number":287,"context_line":"                if (!packageName.equals(str)) {"},{"line_number":288,"context_line":"                    return false;"},{"line_number":289,"context_line":"                }"},{"line_number":290,"context_line":"            }"},{"line_number":291,"context_line":"        }"},{"line_number":292,"context_line":"        return true;"}],"source_content_type":"text/x-java","patch_set":4,"id":"f8b24c8c_30396f02","line":289,"range":{"start_line":287,"start_character":0,"end_line":289,"end_character":17},"updated":"2018-06-25 05:54:18.000000000","message":"If you have multiple packages listed in your string, failing here probably is not what you want, since you will return false as soon as you find a package, even though your expected package might be later in the list.","commit_id":"d26e1ba6e4189ea44bcec0e5cb186b8e6d01b09e"},{"author":{"_account_id":3962,"name":"Rashed Abdel-Tawab","email":"rashedabdeltawab@gmail.com","username":"Rashed","avatars":[{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"change_message_id":"dca1637f754739738c3224c0a0a5f47650be2a00","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            TextUtils.StringSplitter splitter \u003d new TextUtils.SimpleStringSplitter(\u0027,\u0027);"},{"line_number":285,"context_line":"            splitter.setString(packageList);"},{"line_number":286,"context_line":"            for (String str : splitter) {"},{"line_number":287,"context_line":"                if (!packageName.equals(str)) {"},{"line_number":288,"context_line":"                    return false;"},{"line_number":289,"context_line":"                }"},{"line_number":290,"context_line":"            }"},{"line_number":291,"context_line":"        }"},{"line_number":292,"context_line":"        return true;"}],"source_content_type":"text/x-java","patch_set":4,"id":"e9d5e216_8f718cc7","line":289,"range":{"start_line":287,"start_character":0,"end_line":289,"end_character":17},"in_reply_to":"f8b24c8c_30396f02","updated":"2018-06-25 06:01:52.000000000","message":"Crap, yeah you\u0027re right, missed that","commit_id":"d26e1ba6e4189ea44bcec0e5cb186b8e6d01b09e"},{"author":{"_account_id":2936,"name":"Ethan Chen","email":"intervigil@gmail.com","username":"intervigil","avatars":[{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"38dd06460ed5b299f9da53a7067ed488b0337cf8","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                    return true;"},{"line_number":289,"context_line":"                }"},{"line_number":290,"context_line":"            }"},{"line_number":291,"context_line":"            return false;"},{"line_number":292,"context_line":"        }"},{"line_number":293,"context_line":"        return true;"},{"line_number":294,"context_line":"    }"}],"source_content_type":"text/x-java","patch_set":5,"id":"7108f146_6a5b756a","line":291,"range":{"start_line":291,"start_character":12,"end_line":291,"end_character":25},"updated":"2018-07-13 07:18:40.000000000","message":"This logic is still super weird to me.\n\nIf there is a package list, it acts like a whitelist.\nIf there is no package list, always allow.\n\nIf you are going to default to always allow, maybe you want a blacklist instead...?","commit_id":"2d95fa3a51f97809c9d644ec7d4f586835ad2059"},{"author":{"_account_id":3962,"name":"Rashed Abdel-Tawab","email":"rashedabdeltawab@gmail.com","username":"Rashed","avatars":[{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"change_message_id":"7c3f0e487fa6390e0f5ad125b49f3c5b409bfa10","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                    return true;"},{"line_number":289,"context_line":"                }"},{"line_number":290,"context_line":"            }"},{"line_number":291,"context_line":"            return false;"},{"line_number":292,"context_line":"        }"},{"line_number":293,"context_line":"        return true;"},{"line_number":294,"context_line":"    }"}],"source_content_type":"text/x-java","patch_set":5,"id":"34bf249c_fa9a33ff","line":291,"range":{"start_line":291,"start_character":12,"end_line":291,"end_character":25},"in_reply_to":"7108f146_6a5b756a","updated":"2018-07-14 16:16:46.000000000","message":"Sure I don\u0027t mind having a blacklist. But we shouldn\u0027t have changed the default behaviour to begin with IMO.","commit_id":"2d95fa3a51f97809c9d644ec7d4f586835ad2059"},{"author":{"_account_id":2936,"name":"Ethan Chen","email":"intervigil@gmail.com","username":"intervigil","avatars":[{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4b5da55d5c819a76d6de4c7746fa2f91a0fcf4e3","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            TextUtils.StringSplitter splitter \u003d new TextUtils.SimpleStringSplitter(\u0027,\u0027);"},{"line_number":296,"context_line":"            splitter.setString(packageBlacklist);"},{"line_number":297,"context_line":"            for (String str : splitter) {"},{"line_number":298,"context_line":"                if (packageBlacklist.equals(str)) {"},{"line_number":299,"context_line":"                    return false;"},{"line_number":300,"context_line":"                }"},{"line_number":301,"context_line":"            }"}],"source_content_type":"text/x-java","patch_set":6,"id":"0fc1fc83_523750e5","line":298,"range":{"start_line":298,"start_character":20,"end_line":298,"end_character":36},"updated":"2018-08-02 05:25:10.000000000","message":"packageName","commit_id":"a476f30a81b29e51a2e1a476ce907963a084a82d"},{"author":{"_account_id":3962,"name":"Rashed Abdel-Tawab","email":"rashedabdeltawab@gmail.com","username":"Rashed","avatars":[{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"change_message_id":"bb23e6151bb79a765b88e4565fb06b475c0589ca","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            TextUtils.StringSplitter splitter \u003d new TextUtils.SimpleStringSplitter(\u0027,\u0027);"},{"line_number":296,"context_line":"            splitter.setString(packageBlacklist);"},{"line_number":297,"context_line":"            for (String str : splitter) {"},{"line_number":298,"context_line":"                if (packageBlacklist.equals(str)) {"},{"line_number":299,"context_line":"                    return false;"},{"line_number":300,"context_line":"                }"},{"line_number":301,"context_line":"            }"}],"source_content_type":"text/x-java","patch_set":6,"id":"ac2c0362_40b8c6d8","line":298,"range":{"start_line":298,"start_character":20,"end_line":298,"end_character":36},"in_reply_to":"0fc1fc83_523750e5","updated":"2018-08-02 05:44:33.000000000","message":"Bah, forgot to amend.","commit_id":"a476f30a81b29e51a2e1a476ce907963a084a82d"},{"author":{"_account_id":2936,"name":"Ethan Chen","email":"intervigil@gmail.com","username":"intervigil","avatars":[{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/382d80f420fb681ba1b88c29df904f29.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4b5da55d5c819a76d6de4c7746fa2f91a0fcf4e3","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                }"},{"line_number":301,"context_line":"            }"},{"line_number":302,"context_line":"        }"},{"line_number":303,"context_line":"        return true;"},{"line_number":304,"context_line":"    }"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    /**"}],"source_content_type":"text/x-java","patch_set":6,"id":"960fe3f3_05a2fc03","line":303,"range":{"start_line":303,"start_character":15,"end_line":303,"end_character":19},"updated":"2018-08-02 05:25:10.000000000","message":"false ?","commit_id":"a476f30a81b29e51a2e1a476ce907963a084a82d"},{"author":{"_account_id":3962,"name":"Rashed Abdel-Tawab","email":"rashedabdeltawab@gmail.com","username":"Rashed","avatars":[{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/6e28c56bf2b55e191b60a61ca5852f1f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}],"tags":["SERVICE_USER"]},"change_message_id":"bb23e6151bb79a765b88e4565fb06b475c0589ca","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                }"},{"line_number":301,"context_line":"            }"},{"line_number":302,"context_line":"        }"},{"line_number":303,"context_line":"        return true;"},{"line_number":304,"context_line":"    }"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    /**"}],"source_content_type":"text/x-java","patch_set":6,"id":"6118c6dd_00bebf0b","line":303,"range":{"start_line":303,"start_character":15,"end_line":303,"end_character":19},"in_reply_to":"960fe3f3_05a2fc03","updated":"2018-08-02 05:44:33.000000000","message":"The objective of the patch is to restore the original functionality and not limit the cameras if no props are set, so should be true.","commit_id":"a476f30a81b29e51a2e1a476ce907963a084a82d"}]}
