1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#import <Cocoa/Cocoa.h>
6
7#import "base/mac/scoped_nsobject.h"
8#include "base/message_loop/message_loop.h"
9#import "chrome/browser/ui/cocoa/about_ipc_controller.h"
10#include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
11#include "content/public/test/test_browser_thread.h"
12#include "testing/gtest/include/gtest/gtest.h"
13#include "testing/platform_test.h"
14
15#if defined(IPC_MESSAGE_LOG_ENABLED)
16
17namespace {
18
19class AboutIPCControllerTest : public CocoaTest {
20 public:
21  virtual void SetUp() {
22    CocoaTest::SetUp();
23    ui_message_loop_.reset(new base::MessageLoopForUI());
24    ui_thread_.reset(new content::TestBrowserThread(
25        content::BrowserThread::UI, base::MessageLoop::current()));
26  }
27
28  virtual void TearDown() {
29    CocoaTest::TearDown();
30    ui_thread_.reset(NULL);
31  }
32
33 private:
34  scoped_ptr<base::MessageLoopForUI> ui_message_loop_;
35  scoped_ptr<content::TestBrowserThread> ui_thread_;
36};
37
38TEST_F(AboutIPCControllerTest, TestFilter) {
39  AboutIPCController* controller = [[AboutIPCController alloc] init];
40  EXPECT_TRUE([controller window]);  // force nib load.
41  IPC::LogData data;
42
43  // Make sure generic names do NOT get filtered.
44  std::string names[] = { "PluginProcessingIsMyLife",
45                          "ViewMsgFoo",
46                          "NPObjectHell" };
47  for (size_t i = 0; i < arraysize(names); i++) {
48    data.message_name = names[i];
49    base::scoped_nsobject<CocoaLogData> cdata(
50        [[CocoaLogData alloc] initWithLogData:data]);
51    EXPECT_FALSE([controller filterOut:cdata.get()]);
52  }
53
54  // Flip a checkbox, see it filtered, flip back, all is fine.
55  data.message_name = "ViewMsgFoo";
56  base::scoped_nsobject<CocoaLogData> cdata(
57      [[CocoaLogData alloc] initWithLogData:data]);
58  [controller setDisplayViewMessages:NO];
59  EXPECT_TRUE([controller filterOut:cdata.get()]);
60  [controller setDisplayViewMessages:YES];
61  EXPECT_FALSE([controller filterOut:cdata.get()]);
62  [controller close];
63}
64
65}  // namespace
66
67#endif  // IPC_MESSAGE_LOG_ENABLED
68