function CheckChrome()
	local osshellObj = XLGetObject("Xunlei.OSShell.Obj")
	local chromeSupportObj = XLGetObject("Xunlei.ChromeSupport.Obj")
	
	local bIsInstall = chromeSupportObj:IsInstallChrome()
	if bIsInstall ~= true then
		return 0
	end
		
	local version = chromeSupportObj:SearchChromeVersion()
	if version < 4 then
		--XLMessageBox("chrome 版本太低，无法安装插件")
		return 0
	end

	--suc==false说明配置文件有问题，需要重新安装插件
	local suc, state = GetPluginState()
	if not suc then
		return 1
	end
	
	--插件是否被启用。
	if state == 0 then
		return 8
	elseif state == 1 then
		return 0
	else
		--XLMessageBox("不可能出现的情况")
		return 1
	end
end

function RepairChrome()
	local chromeSupportObj = XLGetObject("Xunlei.ChromeSupport.Obj")
	--检测“Thunder.xpi”是否存在
	if not chromeSupportObj:ChromeNeedsFilesExists() then
		return 1
	end
	
	local statusCheck = CheckChrome()
	if statusCheck == 1 then 				--需要重装插件
		chromeSupportObj:SetChromeDefaultToThunder()	
	elseif statusCheck == 8 then			--需要启用插件
		--检测“chrome.exe”进程是否开启
		local osshellObj = XLGetObject("Xunlei.OSShell.Obj")
		local ProcessName = "chrome.exe"
		if osshellObj:IsProcessExist(ProcessName) then		
			return 4
		end
		--设置启用
		if not SetPluginState(1) then
			return 1
		end
	else
		--XLMessageBox("不可能出现的情况")
	end
	
	return 0
end

--设置Chrome配置文件中对应插件的State值
--返回是否设置成功
function SetPluginState(state)
	local osshellObj = XLGetObject("Xunlei.OSShell.Obj")
	local chromeSupportObj = XLGetObject("Xunlei.ChromeSupport.Obj")
	local PreferencesPath = chromeSupportObj:SearchChromePreferencesPath()
	--解析json文件
	local configTab = GetJsonTab(PreferencesPath)	
	if configTab==nil or configTab["extensions"]==nil or configTab["extensions"]["settings"]==nil or configTab["extensions"]["settings"]["hmbifdmobcbjlhplmlnbjbofnnoolink"]==nil or configTab["extensions"]["settings"]["hmbifdmobcbjlhplmlnbjbofnnoolink"]["state"] == nil then
		return false
	end
	
	--更新配置文件
	configTab["extensions"]["settings"]["hmbifdmobcbjlhplmlnbjbofnnoolink"]["state"] = state
	
	--将table编码成json信息
	local jsonObj = xap_get_object("xap.encoding.json")
	local jsonText,err = jsonObj.encode(configTab)
	if err ~= 0 then
		return false
	end
	
	--写入临时文件
	local objDoctorPath = XLGetObject("XLDoctor.Thunder7Helper.Obj")
	local strUserDataPath = objDoctorPath:GetUserDataPath()
	local tmpPath = strUserDataPath.."Profiles\\xldt_data\\conf\\tmpChromePreferences"
	if not osshellObj:WriteFile(tmpPath, 0, 0, 0, string.len(jsonText), jsonText) then
		return false
	end
	
	--覆盖配置文件
	if not osshellObj:ReplaceFile(tmpPath, PreferencesPath, false) then
		return false
	end
	
	return true
end

--取得Chrome配置文件中对应插件的State值，若取值失败则认为插件不存在
--返回：v1 bool，取值是否成功。 v2 int，state值
function GetPluginState()
	local jsonObj = xap_get_object("xap.encoding.json")
	local chromeSupportObj = XLGetObject("Xunlei.ChromeSupport.Obj")
	local PreferencesPath = chromeSupportObj:SearchChromePreferencesPath()
	
	--解析Json文件
	local configTab = GetJsonTab(PreferencesPath)
	if configTab==nil or configTab["extensions"]==nil or configTab["extensions"]["settings"]==nil or configTab["extensions"]["settings"]["hmbifdmobcbjlhplmlnbjbofnnoolink"]==nil or configTab["extensions"]["settings"]["hmbifdmobcbjlhplmlnbjbofnnoolink"]["state"] == nil then
		--state信息不存在
		return false
	end
	
	--取state值
	return true, configTab["extensions"]["settings"]["hmbifdmobcbjlhplmlnbjbofnnoolink"]["state"]
end

function GetJsonTab(filePath)
	local osshellObj = XLGetObject("Xunlei.OSShell.Obj")
	--配置文件异常
	if not osshellObj:FileExists(filePath) then		
		return nil
	end
	
	--读取配置文件，存入jsonStr
	local LuaFileObj = XLGetObject("XLDoctor.FileIO.Obj")
	local filehandle = LuaFileObj:Open(filePath, "r")
	local line = LuaFileObj:ReadLine(filehandle)
	local jsonStr = ""
	while line do
		jsonStr = jsonStr..line
		line = LuaFileObj:ReadLine(filehandle)
	end
	LuaFileObj:Close(filehandle)

	--解析json
	local jsonObj = xap_get_object("xap.encoding.json")
	local jsonTab, err = jsonObj.decode(jsonStr)
	if err == 0 then	
		return jsonTab
	end
	
	return nil
end