| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Implementation of DeleteChromeHistory | 5 // Implementation of DeleteChromeHistory |
| 6 #include "chrome_frame/delete_chrome_history.h" | 6 #include "chrome_frame/delete_chrome_history.h" |
| 7 | 7 |
| 8 #include "chrome/browser/browsing_data_remover.h" | 8 #include "chrome/browser/browsing_data_remover.h" |
| 9 | 9 |
| 10 #include "base/win/windows_version.h" | 10 #include "base/win/windows_version.h" |
| 11 #include "chrome_frame/chrome_frame_activex.h" | 11 #include "chrome_frame/chrome_frame_activex.h" |
| 12 #include "chrome_frame/utils.h" | 12 #include "chrome_frame/utils.h" |
| 13 | 13 |
| 14 // Below other header to avoid symbol pollution. | 14 // Below other header to avoid symbol pollution. |
| 15 #define INITGUID | 15 #define INITGUID |
| 16 #include <deletebrowsinghistory.h> | 16 #include <deletebrowsinghistory.h> |
| 17 | 17 |
| 18 DeleteChromeHistory::DeleteChromeHistory() | 18 DeleteChromeHistory::DeleteChromeHistory() |
| 19 : remove_mask_(0) { | 19 : remove_mask_(0) { |
| 20 DLOG(INFO) << __FUNCTION__; | 20 DVLOG(1) << __FUNCTION__; |
| 21 } | 21 } |
| 22 | 22 |
| 23 DeleteChromeHistory::~DeleteChromeHistory() { | 23 DeleteChromeHistory::~DeleteChromeHistory() { |
| 24 } | 24 } |
| 25 | 25 |
| 26 | 26 |
| 27 HRESULT DeleteChromeHistory::FinalConstruct() { | 27 HRESULT DeleteChromeHistory::FinalConstruct() { |
| 28 DLOG(INFO) << __FUNCTION__; | 28 DVLOG(1) << __FUNCTION__; |
| 29 Initialize(); | 29 Initialize(); |
| 30 return S_OK; | 30 return S_OK; |
| 31 } | 31 } |
| 32 | 32 |
| 33 void DeleteChromeHistory::OnAutomationServerReady() { | 33 void DeleteChromeHistory::OnAutomationServerReady() { |
| 34 DLOG(INFO) << __FUNCTION__; | 34 DVLOG(1) << __FUNCTION__; |
| 35 automation_client_->RemoveBrowsingData(remove_mask_); | 35 automation_client_->RemoveBrowsingData(remove_mask_); |
| 36 loop_.Quit(); | 36 loop_.Quit(); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void DeleteChromeHistory::OnAutomationServerLaunchFailed( | 39 void DeleteChromeHistory::OnAutomationServerLaunchFailed( |
| 40 AutomationLaunchResult reason, const std::string& server_version) { | 40 AutomationLaunchResult reason, const std::string& server_version) { |
| 41 DLOG(WARNING) << __FUNCTION__; | 41 DLOG(WARNING) << __FUNCTION__; |
| 42 loop_.Quit(); | 42 loop_.Quit(); |
| 43 } | 43 } |
| 44 | 44 |
| 45 void DeleteChromeHistory::GetProfilePath(const std::wstring& profile_name, | 45 void DeleteChromeHistory::GetProfilePath(const std::wstring& profile_name, |
| 46 FilePath* profile_path) { | 46 FilePath* profile_path) { |
| 47 ChromeFramePlugin::GetProfilePath(kIexploreProfileName, profile_path); | 47 ChromeFramePlugin::GetProfilePath(kIexploreProfileName, profile_path); |
| 48 } | 48 } |
| 49 | 49 |
| 50 STDMETHODIMP DeleteChromeHistory::DeleteBrowsingHistory(DWORD flags) { | 50 STDMETHODIMP DeleteChromeHistory::DeleteBrowsingHistory(DWORD flags) { |
| 51 DLOG(INFO) << __FUNCTION__; | 51 DVLOG(1) << __FUNCTION__; |
| 52 // Usually called inside a quick startup/tear-down routine by RunDLL32. You | 52 // Usually called inside a quick startup/tear-down routine by RunDLL32. You |
| 53 // can simulate the process by calling: | 53 // can simulate the process by calling: |
| 54 // RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255 | 54 // RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255 |
| 55 // Since automation setup isn't synchronous, we can be tearing down while | 55 // Since automation setup isn't synchronous, we can be tearing down while |
| 56 // being only partially set-up, causing even synchronous IPCs to be dropped. | 56 // being only partially set-up, causing even synchronous IPCs to be dropped. |
| 57 // Since the *Chrome* startup/tear-down occurs synchronously from the | 57 // Since the *Chrome* startup/tear-down occurs synchronously from the |
| 58 // perspective of automation, we can add a flag to the chrome.exe invocation | 58 // perspective of automation, we can add a flag to the chrome.exe invocation |
| 59 // in lieu of sending an IPC when it seems appropriate. Since we assume this | 59 // in lieu of sending an IPC when it seems appropriate. Since we assume this |
| 60 // happens in one-off fashion, don't attempt to pack REMOVE_* arguments. | 60 // happens in one-off fashion, don't attempt to pack REMOVE_* arguments. |
| 61 // Instead, have the browser process clobber all history. | 61 // Instead, have the browser process clobber all history. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 91 remove_mask_ |= BrowsingDataRemover::REMOVE_HISTORY; | 91 remove_mask_ |= BrowsingDataRemover::REMOVE_HISTORY; |
| 92 | 92 |
| 93 loop_.PostDelayedTask(FROM_HERE, | 93 loop_.PostDelayedTask(FROM_HERE, |
| 94 new MessageLoop::QuitTask, 1000 * 600); | 94 new MessageLoop::QuitTask, 1000 * 600); |
| 95 loop_.MessageLoop::Run(); | 95 loop_.MessageLoop::Run(); |
| 96 | 96 |
| 97 return S_OK; | 97 return S_OK; |
| 98 } | 98 } |
| 99 | 99 |
| 100 | 100 |
| OLD | NEW |