The following code adds a group, it can be an Active Directory Group or a Sharepoint Group, to line item permition level using only javascript.
var groupName = L_Menu_BaseUrl == "" ? 'domain\\all' : 'domain\\managing'; //group name
function breakSecurityInheritanceChangeUser(id, groupName) {
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('ListName');
var itemId = id;
this.oListItem = oList.getItemById(itemId);
oListItem.breakRoleInheritance(true);
this.oUser = clientContext.get_web().ensureUser(groupName);
var collRoleDefinitionBinding = SP.RoleDefinitionBindingCollection.newObject(clientContext);
collRoleDefinitionBinding.add(clientContext.get_web().get_roleDefinitions().getByType(SP.RoleType.administrator)); //full control
oListItem.get_roleAssignments().add(oUser, collRoleDefinitionBinding);
clientContext.load(oUser);
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, function () { Success(groupName); }), Function.createDelegate(this, this.Failure));
}
function Success(groupName) {
var text = $("#hiddenSecurityItemSuccess").val(); //hidden for logging sucess
var temp = groupName;
text =+ temp + "<br/>";
$("#hiddenSecurityItemSuccess").val(text);
}
function Failure(sender, args) {
var text = $("#hiddenSecurityItemError").val(); //hidden for logging error
var temp = args.get_message();
text =+ temp + "<br/>";
$("#hiddenSecurityItemError").val(text);
}