diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index 52cf9d12287beda4683f2cd2059cb5961f33838d..638744a1426abf1f64489e470f995baad527d241 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -2,7 +2,6 @@
 
 module BlobHelper
   def highlight(file_name, file_content, language: nil, plain: false)
-    plain ||= file_content.length > Blob::MAXIMUM_TEXT_HIGHLIGHT_SIZE
     highlighted = Gitlab::Highlight.highlight(file_name, file_content, plain: plain, language: language)
 
     raw %(<pre class="code highlight"><code>#{highlighted}</code></pre>)
diff --git a/app/models/blob.rb b/app/models/blob.rb
index 425ba69c073df28847090c50bf8811b0ca5181d4..57c813e37751b30bc6cce4dfdd0717a3925a5dbf 100644
--- a/app/models/blob.rb
+++ b/app/models/blob.rb
@@ -7,8 +7,6 @@ class Blob < SimpleDelegator
   CACHE_TIME = 60 # Cache raw blobs referred to by a (mutable) ref for 1 minute
   CACHE_TIME_IMMUTABLE = 3600 # Cache blobs referred to by an immutable reference for 1 hour
 
-  MAXIMUM_TEXT_HIGHLIGHT_SIZE = 1.megabyte
-
   # Finding a viewer for a blob happens based only on extension and whether the
   # blob is binary or text, which means 1 blob should only be matched by 1 viewer,
   # and the order of these viewers doesn't really matter.
@@ -123,10 +121,6 @@ def load_all_data!
     end
   end
 
-  def no_highlighting?
-    raw_size && raw_size > MAXIMUM_TEXT_HIGHLIGHT_SIZE
-  end
-
   def empty?
     raw_size == 0
   end
diff --git a/app/presenters/blob_presenter.rb b/app/presenters/blob_presenter.rb
index 2bca413876c6d2cac7f4b567b92fa567b9a20d31..9980f6cd8a6d7f4f4ade3b631fbf224607fd4d45 100644
--- a/app/presenters/blob_presenter.rb
+++ b/app/presenters/blob_presenter.rb
@@ -8,7 +8,7 @@ def highlight(plain: nil)
       blob.path,
       blob.data,
       language: blob.language_from_gitattributes,
-      plain: (plain || blob.no_highlighting?)
+      plain: plain
     )
   end
 end
diff --git a/app/views/search/results/_snippet_blob.html.haml b/app/views/search/results/_snippet_blob.html.haml
index 92ea6f281f43b8c9b2092faaa5f0dbc7de256777..b4ecd7bbae9f68cd6ad5ad6ad70fccf97dbcd45a 100644
--- a/app/views/search/results/_snippet_blob.html.haml
+++ b/app/views/search/results/_snippet_blob.html.haml
@@ -39,7 +39,7 @@
         .blob-content
           - snippet_chunks.each do |chunk|
             - unless chunk[:data].empty?
-              = highlight(snippet.file_name, chunk[:data], plain: snippet.blob.no_highlighting?)
+              = highlight(snippet.file_name, chunk[:data])
             - else
               .file-content.code
                 .nothing-here-block Empty file
diff --git a/lib/gitlab/highlight.rb b/lib/gitlab/highlight.rb
index d28223194ccc7dec528e90a5762abb1652323732..a4e60bbd8286003024b6828525f33bdb57612ead 100644
--- a/lib/gitlab/highlight.rb
+++ b/lib/gitlab/highlight.rb
@@ -4,6 +4,7 @@ module Gitlab
   class Highlight
     TIMEOUT_BACKGROUND = 30.seconds
     TIMEOUT_FOREGROUND = 3.seconds
+    MAXIMUM_TEXT_HIGHLIGHT_SIZE = 1.megabyte
 
     def self.highlight(blob_name, blob_content, language: nil, plain: false)
       new(blob_name, blob_content, language: language)
@@ -20,6 +21,8 @@ def initialize(blob_name, blob_content, language: nil)
     end
 
     def highlight(text, continue: true, plain: false)
+      plain ||= text.length > MAXIMUM_TEXT_HIGHLIGHT_SIZE
+
       highlighted_text = highlight_text(text, continue: continue, plain: plain)
       highlighted_text = link_dependencies(text, highlighted_text) if blob_name
       highlighted_text
diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb
index 3dbb0608a4f05e2f7be4db96580cb2230782162e..6c86ad11385368baee8b23adf596cd91ca53896d 100644
--- a/lib/gitlab/search_results.rb
+++ b/lib/gitlab/search_results.rb
@@ -23,10 +23,6 @@ def path
         filename
       end
 
-      def no_highlighting?
-        false
-      end
-
       # Since search results often contain many items,
       # not triggering lookup can avoid n+1 queries.
       def language_from_gitattributes
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index 1c216b3fe97c67d75cf694f6d9a630a26b87548c..f709f152c9257d925335299fff648a40f5f3c5bf 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -3,63 +3,13 @@
 describe BlobHelper do
   include TreeHelper
 
-  let(:blob_name) { 'test.lisp' }
-  let(:no_context_content) { ":type \"assem\"))" }
-  let(:blob_content) { "(make-pathname :defaults name\n#{no_context_content}" }
-  let(:split_content) { blob_content.split("\n") }
-  let(:multiline_content) do
-    %q(
-    def test(input):
-      """This is line 1 of a multi-line comment.
-      This is line 2.
-      """
-    )
-  end
-
   describe '#highlight' do
-    it 'returns plaintext for unknown lexer context' do
-      result = helper.highlight(blob_name, no_context_content)
-      expect(result).to eq(%[<pre class="code highlight"><code><span id="LC1" class="line" lang="">:type "assem"))</span></code></pre>])
+    it 'wraps highlighted content' do
+      expect(helper.highlight('test.rb', '52')).to eq(%q[<pre class="code highlight"><code><span id="LC1" class="line" lang="ruby"><span class="mi">52</span></span></code></pre>])
     end
 
-    it 'returns plaintext for long blobs' do
-      stub_const('Blob::MAXIMUM_TEXT_HIGHLIGHT_SIZE', 1)
-      result = helper.highlight(blob_name, blob_content)
-
-      expect(result).to eq(%[<pre class="code highlight"><code><span id="LC1" class="line" lang="">(make-pathname :defaults name</span>\n<span id="LC2" class="line" lang="">:type "assem"))</span></code></pre>])
-    end
-
-    it 'highlights single block' do
-      expected = %Q[<pre class="code highlight"><code><span id="LC1" class="line" lang="common_lisp"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span>
-<span id="LC2" class="line" lang="common_lisp"><span class="ss">:type</span> <span class="s">"assem"</span><span class="p">))</span></span></code></pre>]
-
-      expect(helper.highlight(blob_name, blob_content)).to eq(expected)
-    end
-
-    it 'highlights multi-line comments' do
-      result = helper.highlight(blob_name, multiline_content)
-      html = Nokogiri::HTML(result)
-      lines = html.search('.s')
-      expect(lines.count).to eq(3)
-      expect(lines[0].text).to eq('"""This is line 1 of a multi-line comment.')
-      expect(lines[1].text).to eq('      This is line 2.')
-      expect(lines[2].text).to eq('      """')
-    end
-
-    context 'diff highlighting' do
-      let(:blob_name) { 'test.diff' }
-      let(:blob_content) { "+aaa\n+bbb\n- ccc\n ddd\n"}
-      let(:expected) do
-        %q(<pre class="code highlight"><code><span id="LC1" class="line" lang="diff"><span class="gi">+aaa</span></span>
-<span id="LC2" class="line" lang="diff"><span class="gi">+bbb</span></span>
-<span id="LC3" class="line" lang="diff"><span class="gd">- ccc</span></span>
-<span id="LC4" class="line" lang="diff"> ddd</span></code></pre>)
-      end
-
-      it 'highlights each line properly' do
-        result = helper.highlight(blob_name, blob_content)
-        expect(result).to eq(expected)
-      end
+    it 'handles plain version' do
+      expect(helper.highlight('test.rb', '52', plain: true)).to eq(%q[<pre class="code highlight"><code><span id="LC1" class="line" lang="">52</span></code></pre>])
     end
   end
 
diff --git a/spec/lib/gitlab/highlight_spec.rb b/spec/lib/gitlab/highlight_spec.rb
index 77179260a66813dfff8abc21ae06e28fcdf47bc8..fe0e9702f8a57c372fd5738eb5d9e6f7caa5f5dd 100644
--- a/spec/lib/gitlab/highlight_spec.rb
+++ b/spec/lib/gitlab/highlight_spec.rb
@@ -18,6 +18,66 @@
   end
 
   describe '#highlight' do
+    let(:file_name) { 'test.lisp' }
+    let(:no_context_content) { ":type \"assem\"))" }
+    let(:content) { "(make-pathname :defaults name\n#{no_context_content}" }
+    let(:multiline_content) do
+      %q(
+      def test(input):
+        """This is line 1 of a multi-line comment.
+        This is line 2.
+        """
+      )
+    end
+
+    it 'highlights' do
+      expected = %Q[<span id="LC1" class="line" lang="common_lisp"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span>
+<span id="LC2" class="line" lang="common_lisp"><span class="ss">:type</span> <span class="s">"assem"</span><span class="p">))</span></span>]
+
+      expect(described_class.highlight(file_name, content)).to eq(expected)
+    end
+
+    it 'returns plain version for unknown lexer context' do
+      result = described_class.highlight(file_name, no_context_content)
+
+      expect(result).to eq(%[<span id="LC1" class="line" lang="">:type "assem"))</span>])
+    end
+
+    it 'returns plain version for long content' do
+      stub_const('Gitlab::Highlight::MAXIMUM_TEXT_HIGHLIGHT_SIZE', 1)
+      result = described_class.highlight(file_name, content)
+
+      expect(result).to eq(%[<span id="LC1" class="line" lang="">(make-pathname :defaults name</span>\n<span id="LC2" class="line" lang="">:type "assem"))</span>])
+    end
+
+    it 'highlights multi-line comments' do
+      result = described_class.highlight(file_name, multiline_content)
+      html = Nokogiri::HTML(result)
+      lines = html.search('.s')
+
+      expect(lines.count).to eq(3)
+      expect(lines[0].text).to eq('"""This is line 1 of a multi-line comment.')
+      expect(lines[1].text).to eq('        This is line 2.')
+      expect(lines[2].text).to eq('        """')
+    end
+
+    context 'diff highlighting' do
+      let(:file_name) { 'test.diff' }
+      let(:content) { "+aaa\n+bbb\n- ccc\n ddd\n"}
+      let(:expected) do
+        %q(<span id="LC1" class="line" lang="diff"><span class="gi">+aaa</span></span>
+<span id="LC2" class="line" lang="diff"><span class="gi">+bbb</span></span>
+<span id="LC3" class="line" lang="diff"><span class="gd">- ccc</span></span>
+<span id="LC4" class="line" lang="diff"> ddd</span>)
+      end
+
+      it 'highlights each line properly' do
+        result = described_class.highlight(file_name, content)
+
+        expect(result).to eq(expected)
+      end
+    end
+
     describe 'with CRLF' do
       let(:branch) { 'crlf-diff' }
       let(:path) { 'files/whitespace' }
diff --git a/spec/presenters/blob_presenter_spec.rb b/spec/presenters/blob_presenter_spec.rb
index 5c83fa39d80fb6351832c2d65904405d9a6acfc3..e85e7a41017d9b33d1a0d14d58e127e2e84828d8 100644
--- a/spec/presenters/blob_presenter_spec.rb
+++ b/spec/presenters/blob_presenter_spec.rb
@@ -18,31 +18,15 @@
     subject { described_class.new(blob) }
 
     it 'returns highlighted content' do
-      expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: false, language: nil)
+      expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: nil, language: nil)
 
       subject.highlight
     end
 
-    context 'with :plain' do
-      it 'returns plain content when no_highlighting? is true' do
-        allow(blob).to receive(:no_highlighting?).and_return(true)
+    it 'returns plain content when :plain is true' do
+      expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: true, language: nil)
 
-        subject.highlight
-      end
-
-      it 'returns plain content when :plain is true' do
-        expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: true, language: nil)
-
-        subject.highlight(plain: true)
-      end
-
-      it 'returns plain content when :plain is false, but no_highlighting? is true' do
-        allow(blob).to receive(:no_highlighting?).and_return(true)
-
-        expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: true, language: nil)
-
-        subject.highlight(plain: false)
-      end
+      subject.highlight(plain: true)
     end
 
     context 'gitlab-language contains a match' do
@@ -51,7 +35,7 @@
       end
 
       it 'passes language to inner call' do
-        expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: false, language: 'ruby')
+        expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: nil, language: 'ruby')
 
         subject.highlight
       end